2017-10-09 68 views
2

我有一个表格定义报告的选择标准。 从模型中自动填充的下拉“建筑物”之一应该不是强制性的,并且默认值为空。我无法实现空洞的一部分。django表单下拉菜单中的初始值是否为空?

我想第一场在我的下拉

在我的形式

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

是的,我喜欢。我刚刚更新了我原来的帖子。 –

+0

请提供您的模板 –

回答

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) 
+0

你可以更容易地做'... forms.ChoiceField(choices = [('','-------')] + list(Building.ob ....'。 – Thismatters

-1

Django,也许你可以尝试一下没有。所有(),如下

选择= Building.objects.values_list( '身份证', '名')

+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> 
+0

谢谢,但目前他们已经在我的包括在那里。如果他们没有在我的形式脆皮标签会给出错误。 –