2016-11-30 7 views
0

ModelChoiceFieldの初期選択を指定する方法がわかりません。私は行方不明の警告がありますか?`ModelChoiceField`フォームの初期選択を指定

class QuizUserForm(forms.Form): 
    question = forms.CharField() 
    eq_answer = forms.CharField(widget=forms.Textarea) 

    def __init__(self, *args, **kwargs): 
     super(QuizUserForm, self).__init__(*args, **kwargs) 
     self.fields['mcq_answer_choice'] = forms.ModelChoiceField(queryset=models.MCQChoice.objects.filter(
     question__prompt=kwargs['initial']['question']), initial=1, widget=forms.RadioSelect, 
     empty_label=None) 
+0

にクラスレベルおよび更新のparamsのフィールドを指定するために、良いですか?そのアプローチが間違っているのは、エラーを起こすことです。 –

+0

私はDjango 1.9を使用しています。なぜか分かりませんが、最初の選択肢はありませんが、「クエリーセット」からすべての必要な選択肢が得られています。だから、 'queryset'は期待通りに動作します – SaidAkh

答えて

1

initialをモデルインスタンスと同じに設定してみてください。また、それはあなたが使用しているジャンゴのバージョンは何__init__

class QuizUserForm(forms.Form): 
    question = forms.CharField() 
    eq_answer = forms.CharField(widget=forms.Textarea) 
    mcq_answer_choice = forms.ModelChoiceField(
     queryset=models.MCQChoice.objects.none(), 
     widget=forms.RadioSelect, 
     empty_label=None 
    ) 

    def __init__(self, *args, **kwargs): 
     super(QuizUserForm, self).__init__(*args, **kwargs) 
     queryset = models.MCQChoice.objects.filter(
      question__prompt=kwargs['initial']['question'] 
     ) 
     self.fields['mcq_answer_choice'].queryset = queryset 
     self.fields['mcq_answer_choice'].initial = queryset.first() 
+0

ありがとう、私は'初期 'はMCQChoiceの対象でなければならない – SaidAkh

関連する問題