2017-10-02 9 views
1

として表示されます提出します{{form.queue}}と呼ばれるときにこのフォームをテンプレートにレンダリングすると、ドロップダウンリストになります。しかし、私はラジオボタンフィールドとして、それを必要とするので、私は、各ドロップダウン値のための私のテンプレートでこれをしなかった:今Djangoのフォームは、ラジオボタンの値は、私はこのようなDjangoのフォームを持っているなし

<input type="radio" name="help_form" id="order_issues" value="{{form.queue.field.choices.2.0}}"/> 
<label for="id_order_issues">{{form.queue.field.choices.2.1}}</label> 

、私はこのフォームを送信すると、queue値は私が作っているにもかかわらずNoneとして表示されますこれは必須フィールドなので、フォームの送信は失敗します。もちろん、フォームには他のフィールドがあり、期待どおりに動作します。私は間違って何をしていますか?どんな助けもありがとう!

答えて

1

あなたは、ビューも変更しなければならない。もちろん、order_issues

class HelpForm (forms.form): 
    order_issues = forms.ChoiceField(
     widget=forms.Select(attrs={'class': 'form-control'}), 
     label=_('What can we help you with today?'), 
     required=True, 
     choices=() 
    ) 

にフィールドの名前を変更たとえば、テンプレートでChoiceFieldインスタンスを同期させることによって開始する必要があります

form = HelpForm(initial=initial_data) 
form.fields['order_issues'].choices = [(q.id, q.title) for q in Queue.objects.filter(allow_public_submission=True)] + \ 
             [('', 'Other')] 

そして最後にテンプレートを:

<input type="radio" name="order_issues" id="id_order_issues" value="{{form.order_issues.field.choices.2.0}}"/> 
<label for="id_order_issues">{{form.order_issues.field.choices.2.1}}</label> 

あなたのコードはこれは余分ですが、それは次のようになります。Djangoはinput年代name属性フォームクラスで定義された名前、およびinputに等しくなるように年代id属性がid _field_name

HTMLのものを前置しなければならないことを必要とするための作業ラベルの属性が入力タグに与える影響を理解するのに便利です。

+0

ああ、私のコードを2つの場所で 'order_issues'に変更するのではなく、' queue'に入力名を変更してもうまくいきましたか? – DeA

+0

名前を 'queue'に変更することもできました。どうもありがとうございます! – DeA

+0

喜んで:) – slackmart

関連する問題