django表格下拉列表中的初始值不为空?

时间:2017-10-09 11:01:48

标签: django django-forms

我有一个表单,我在其中定义报告的选择标准。 从模型中自动填充的下拉列表“之一”应该不是强制性的,并且默认值为空。我无法实现空白部分。

我想在我的下拉列表中添加第一个字段

以我的形式

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>

我没有收到任何错误,但默认值不为空,它的值为模型中的第一条记录。

我缺少什么?

3 个答案:

答案 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')