2016-11-25 52 views
0

如果選擇來自queryset或其他視圖邏輯,如何將choices提供給formset?如果選擇來自queryset或其他視圖邏輯,如何向formset提供選擇?

我在forms.py FORMSET設置如下:

class MCQuestionAnswerForm(forms.Form): 
    question = forms.CharField() 
    mcq_answer_choice = forms.ChoiceField(widget=forms.RadioSelect) 


MCQuestionAnswerFormSet = formset_factory(MCQuestionAnswerForm, extra=0) 

我需要在views.py組不同的choices以提供給該formset例如,當choices將是一個查詢集或其它視圖邏輯的結果。我可以使用form_kwargs嗎?如果是這樣,我該怎麼做?

編輯:

對不起,我不清楚choices我要改變。該choices是將在views.py供給在mcq_answer_choice字段

class MCQuestionAnswerForm(forms.Form): 
    question = forms.CharField() 
    mcq_answer_choice = forms.ChoiceField(widget=forms.RadioSelect, choices=SOME_CHOICES_LIST) 

SOME_CHOICES_LIST初始參數。這可能嗎?

回答

1

從官方文檔

class MCQuestionAnswerForm(forms.Form): 
    question = forms.CharField() 
    mcq_answer_choice = forms.ChoiceField(widget=forms.RadioSelect) 

    def __init__(self, *args, **kwargs): 
     self.extra = kwargs.pop('extra') 
     super(MyArticleForm, self).__init__(*args, **kwargs) 

     # You have now use the value of self.extra to construct or alter your form body 
     # For example: 
     self.fields['mcq_answer_choice'].initial = self.extra 

MCQuestionAnswerFormSet = formset_factory(MCQuestionAnswerForm, extra=0) 
+0

謝謝OptimusCrime。您的解決方案是否仍然適用於我的新「編輯」? – SaidAkh