I cannot figure out how to specify initial choice for ModelChoiceField
. Is there any caveat that I am missing?
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)
Try setting initial
equal to model instance. Also it is better, to specify field on class level and update params in __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()
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.