我有一个表单,我在其中定义报告的选择标准。 从模型中自动填充的下拉列表“之一”应该不是强制性的,并且默认值为空。我无法实现空白部分。
我想在我的下拉列表中添加第一个字段
以我的形式
building = forms.IntegerField(
widget=forms.Select(
choices=Building.objects.all().values_list('id', 'name')
) , required=False
)
初始化代码时在视图文件中
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>
我没有收到任何错误,但默认值不为空,它的值为模型中的第一条记录。
我缺少什么?
答案 0 :(得分:0)
将crispy_forms_tags加载到模板的顶部。
{% load crispy_forms_tags %}
<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>
答案 1 :(得分:0)
好的解决方案很简单。在我的文件中,我添加了
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)
答案 2 :(得分:-1)
根据Django,也许您可以在没有.all()的情况下尝试一下
choices = Building.objects.values_list('id','name')