请告诉我,如何完全隐藏表单中的字段,现在只隐藏了该字段,而字段的名称仍然保留?
型号:
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();
}
});
答案 0 :(得分:0)
$('#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();
}
});
答案 1 :(得分:0)
由于这看起来像是基于模型的相对简单的形式。我只会使用Django的通用CreateView而不是创建自己的模板。 https://docs.djangoproject.com/en/2.2/ref/class-based-views/generic-editing/#createview。 您甚至已经准备好了表格。