我有一个表格,我可以在其中定义报告的选择标准。 从模型自动填充的下拉菜单“建筑物”之一应该不是强制性的,默认值为空。我无法实现空的部分。
我想要下拉列表中的第一个字段
在我的表单中
building = forms.IntegerField(
widget=forms.Select(
choices=Building.objects.all().values_list('id', 'name')
) , required=False
)
初始化代码时在 View 文件中
form = PaymentRangeForm(initial = {'building': 0 })
我在我的模板中使用了脆皮形式,但我认为这没有任何区别。
<form method="POST" class="form" action="" method="get">
{% csrf_token %}
{{ form|crispy}}
<br>
<button type="submit" class="btn btn-primary btn-primary">Search</button>
</form>
我没有收到任何错误,但默认值不为空,它具有模型中第一条记录的值。
我错过了什么?
最佳答案
好的 解决方案很简单。在我的源文件中,我添加了
from django.db.models.fields import BLANK_CHOICE_DASH
并更新了表单
class PaymentRangeForm(forms.Form):
start_date = forms.DateField(widget=forms.TextInput(attrs={'type': 'date'} ))
end_date = forms.DateField(widget=forms.TextInput(attrs={'type': 'date'} ))
building = forms.ChoiceField(choices=BLANK_CHOICE_DASH + list(Building.objects.values_list('id', 'name')), required=False)
关于django - Django 表单下拉列表中的初始值不为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46644908/