django表单下拉列表中的初始值不为空?
我有一个表格,其中定义了报告的选择标准。 从模型中自动填充的下拉列表“building”之一不应为必填项,其默认值为空。我不能完成空的部分 我想要下拉列表中的第一个字段 以我的形式django表单下拉列表中的初始值不为空?,django,django-forms,Django,Django Forms,我有一个表格,其中定义了报告的选择标准。 从模型中自动填充的下拉列表“building”之一不应为必填项,其默认值为空。我不能完成空的部分 我想要下拉列表中的第一个字段 以我的形式 building = forms.IntegerField( widget=forms.Select( choices=Building.objects.all().values_list('id', 'name') ) , required=False ) 初始化代码时在视图文件中 form =
building = forms.IntegerField(
widget=forms.Select(
choices=Building.objects.all().values_list('id', 'name')
) , required=False
)
初始化代码时在视图文件中
form = PaymentRangeForm(initial = {'building': 0 })
我在模板中使用了crispy表单,但我不认为这有什么区别
<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>
{%csrf_令牌%}
{{form | crispy}}
搜寻
我没有得到任何错误,但默认值不是空的,它的值是来自模型的第一条记录
我缺少什么?根据,也许您可以在不使用.all()的情况下尝试一下,如下所示
选项=Building.objects.values\u list('id','name')将crispy\u表单\u标记加载到模板顶部
{% 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>
{%load crispy_forms_tags%}
{%csrf_令牌%}
{{form | crispy}}
搜寻
好的解决方案很简单。在我的from文件中,我添加了
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)
你是否在模板中加载crispy表单?是的,我加载。我刚刚更新了我的原始帖子。请提供你的模板。我用formNo更新了原始帖子,没有任何区别。两种情况下的结果相同。谢谢,但不需要。目前它们已经存在于我的包含中。如果我的表单中没有crispy标记,则会出现错误。您可以更轻松地执行
…forms.ChoiceField(choices=[('',----')]+list(Building.ob…
)。