我正在尝试创建一个简单的Django应用,其中我想拥有一组Question
对象。每个问题都有自己的可用答案列表。我想在视图上显示许多这些问题,并根据用户数据创建对象。
这是我无法实现的最后一部分(基于用户数据创建对象)。这就是我所拥有的:
class BaseQuestionFormset(BaseFormSet):
def __init__(self, question_list, *args, **kwargs):
super(BaseQuestionFormset, self).__init__(*args, **kwargs)
self.question_list = question_list
def get_form_kwargs(self, index):
kwargs = super(BaseQuestionFormset, self).get_form_kwargs(index)
if self.question_list and index < len(self.question_list):
kwargs['question'] = self.question_list[index]
else:
kwargs['question'] = None
return kwargs
class QuestionForm(forms.Form):
def __init__(self, question, *args, **kwargs):
super(QuestionForm, self).__init__(*args, **kwargs)
if question:
choice_list = [x for x in question.get_answers_list()]
self.fields["answers"] = forms.ChoiceField(choices=choice_list,
widget=RadioSelect)
self.fields['answers'].label = question.content
我正在创建如下表单:
question_formset = formset_factory(QuestionForm, BaseQuestionFormset, extra=len(questions))
formset = question_formset(question_list=questions)
然后,当我得到用户输入时,我将如下创建表单集:
question_formset = formset_factory(QuestionForm, BaseQuestionFormset, extra=3) // 3 is for debug purposes
formset = question_formset(question_list=None, data=request.POST)
我留下了一个空的表单集,其中没有用户输入的任何数据。如果有任何关于我做错了什么以及如何修复的指示,我将不胜感激。
谢谢!
编辑:
由于我在ModelForm
上有一个临时answers
字段,因此未使用QuestionForm
。 ModelForm对我施加了要避免的约束。例如,我正在使用Question
的子类,例如BoolQuestion
等,但是我很难让它与ModelForm
一起工作。