如何使用模型数据填充formset中的表单?



我得到了问答模型。因此,用户可以在一个页面上创建一个新问题和一些答案。为此,将加载一个QuestionModelForm和一个包含所需数量的answermodelform的表单集:

class AnswerCreateForm(forms.ModelForm):
answertext = forms.CharField(max_length=500, widget=forms.TextInput(attrs={"class": "max"}), label="Antworttext")
field_order = ["answertext", "iscorrect"]
#views.py
AnswerFormSet = formset_factory(AnswerCreateForm, extra=ac)
formset = AnswerFormSet(request.POST)
#html template
<form action="" method="post">
{% csrf_token %}
{{ formset.management_data }}
{{ formset.as_p }}
<input type="submit" value="add question." />
</form>

这个表单集将被发送到html-Template。到目前为止还没有问题。现在,我想为用户添加编辑先前创建的问题及其答案的选项。当进入编辑页面时,我希望加载与以前相同的表单,但预先填充要编辑的对象的数据。对于问题形式,它没有问题,因为我可以直接输入

form_question = QuestionCreateForm(instance=question)

如何对答案的格式集做同样的操作?将有一个对数据库的查询,该查询将加载该问题的所有答案对象。然后,我想创建一个表单集,其中包含返回的答案的表单数量,并且每个表单都填充了答案数据。

queryset=…填充这些参数[Django-doc],对应于ModelForminstance=…参数:

from django.forms importmodelformset_factory
answers = question.answer_set.all()
AnswerFormSet =modelformset_factory(Answer, form=AnswerCreateForm, extra=ac)
formset = AnswerFormSet(request.POST, request.FILES, queryset=answers)

创建用于呈现的表单时也要这样做:

from django.forms importmodelformset_factory
answers = question.answer_set.all()
AnswerFormSet =modelformset_factory(Answer, form=AnswerCreateForm, extra=ac)
formset = AnswerFormSet(queryset=answers)

相关内容

  • 没有找到相关文章

最新更新