簡體   English   中英

Django的。 如何完全隱藏表單中的字段?

[英]Django. How to completely hide the fields in the form?

請告訴我,如何完全隱藏表單中的字段,現在只隱藏字段,但字段的名稱仍然存在?

在此輸入圖像描述

在此輸入圖像描述

模型:

class Listing(models.Model):
    realtor = models.ForeignKey(Realtor, on_delete=models.CASCADE, verbose_name='Риелтор')
    category = models.ForeignKey(Category, on_delete=models.CASCADE, verbose_name='Категория')
    region = models.ForeignKey(Region, on_delete=models.CASCADE, verbose_name='Область')
    city = models.ForeignKey(City, on_delete=models.CASCADE, verbose_name='Город')
    district = models.ForeignKey(District, on_delete=models.CASCADE, verbose_name='Район')
    title = models.CharField(max_length=200, verbose_name='Заголовок')
    landmark = models.CharField(blank=True, max_length=200, verbose_name='Ориентир')
    description = models.TextField(blank=True, verbose_name='Описание')
    series = models.ForeignKey(Series, on_delete=models.CASCADE, verbose_name='Серия')
    rooms = models.IntegerField(default=0, blank=True, verbose_name='Количество комнат')
    sqmt = models.IntegerField(default=0, blank=True, verbose_name='Площадь')
    price = models.IntegerField(default=0, blank=True, verbose_name='Цена')
    photo_main = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True, verbose_name='Основное фото')
    photo_1 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True, verbose_name='Фото 1')
    photo_2 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True, verbose_name='Фото 2')
    photo_3 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True, verbose_name='Фото 3')
    photo_4 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True, verbose_name='Фото 4')
    photo_5 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True, verbose_name='Фото 5')
    photo_6 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True, verbose_name='Фото 6')
    is_published = models.BooleanField(default=True, verbose_name='Публично')
    list_date = models.DateTimeField(default=datetime.now, blank=True, verbose_name='Дата публикации')

    def __str__(self):
        return self.title

forms.py

class ListingForm(forms.ModelForm):

    class Meta:
        model = Listing
        exclude = ('realtor',)

選擇一個類別時,隱藏了不必要的字段,但標簽仍然存在,我無法注冊需要完全隱藏的div,但隱藏了什么,我在瀏覽器中查看了頁面代碼:

<div class="card-body">
<form method="POST" id="ListingForm" data-cities-url="{% url 'ajax_load_cities' %}" data-districts-url="{% url 'ajax_load_districts' %}" novalidate enctype="multipart/form-data">
   {% csrf_token %}
   {% bootstrap_form form %}
<input type="submit" value="Добавить" class="btn btn-secondary btn-block">
</form>
</div>

瀏覽器代碼:

<div class="form-group"><label for="id_series">Серия</label><select name="series" class="form-control" title="" id="id_series">
  <option value="" selected>---------</option>

  <option value="1">104</option>

  <option value="2">105</option>

  <option value="3">106</option>

  <option value="4">хрущ</option>

  <option value="5">инд</option>

  <option value="6">элит</option>

  <option value="7">стал</option>

  <option value="8">г/т</option>

  <option value="9">к/т</option>

</select></div>
<div class="form-group"><label for="id_rooms">Количество комнат</label><input type="number" name="rooms" value="0" class="form-control" placeholder="Количество комнат" title="" id="id_rooms"></div>

JS:

$('#id_category').change(function () {
          var optionSelected = $("option:selected", this);
          var valueSelected = $(this).val();

          if (valueSelected === '1') {
            $('#id_rooms').hide();
            $('#id_series').hide();            
          } else if (valueSelected === '2') {
            $('#id_rooms').hide();
            $('#id_series').hide();
          } else {
            $('#id_rooms').show();
            $('#id_series').show();
          }
        });
$('#id_category').change(function () {
      var optionSelected = $("option:selected", this);
      var valueSelected = $(this).val();

      if (valueSelected === '1') {
        $('#id_rooms').parent().hide();
        $('#id_series').parent().hide();            
      } else if (valueSelected === '2') {
        $('#id_rooms').parent().hide();
        $('#id_series').parent().hide();
      } else {
        $('#id_rooms').parent().show();
        $('#id_series').parent().show();
      }
    });

因為這看起來像是基於模型的相對簡單的形式。 我只會使用Django的通用CreateView而不是創建自己的模板。 https://docs.djangoproject.com/en/2.2/ref/class-based-views/generic-editing/#createview 你甚至准備好了表格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM