2017-10-09 19 views
2

私はレポートの選択基準を定義するフォームを持っています。 モデルから自動入力されたドロップダウンの「建物」の1つは必須ではなく、デフォルト値が空である必要があります。私は空の部分を達成することはできません。djangoフォームのドロップダウンリストの初期値が空ではありませんか?

私は、コード、私は私のテンプレートでサクサクフォームを使用

form = PaymentRangeForm(initial = {'building': 0 }) 

が、私ドンを初期化するとき、私は私のドロップダウンに表示するファイル内

私の形で

building = forms.IntegerField(
widget=forms.Select(
    choices=Building.objects.all().values_list('id', 'name') 
    ) , required=False 
) 

を最初のフィールドをしたいですそれは何か違いがあると思う。

 <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によると、おそらくあなたは(.ALLせずにそれを試してみることができ)の

選択肢= Building.objects.values_list( 'ID'、 '名前')

+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

ありがとうございます。現在、彼らはすでに私のインクルードに入っています。彼らが私のフォームのサクサクのタグがない場合、エラーが発生します。 –

関連する問題