2017-10-09 66 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

謝謝,但目前他們已經在我的包括在那裏。如果他們沒有在我的形式脆皮標籤會給出錯誤。 –