我看到你可以使用屏幕将几种形式记录在一起,在我的例子中,我想同时回答几个问题。 我选择了我的问题并且我回答了我的问题,但它没有记录每当最后一个表格时...... 如何让它同时记录所有信息? 它每次只在我的数据库中注册最后一个表格...
所以我有这样的表格:
class NameForm(forms.ModelForm):
class Meta:
model = Reply
fields = ('question','user','answer')
a views.py:
def get_name(request):
questions = Question.objects.all()
NameFormSet = modelformset_factory(model=Reply, form=NameForm, extra=2, max_num=2)
logged_user = get_logged_user_from_request(request)
if request.method == 'POST':
formset = NameFormSet(request.POST, request.FILES)
if formset.is_valid():
formset.save()
return HttpResponse('Successfully')
else:
return render_to_response('polls/name.html')
else:
formset = NameFormSet()
return render_to_response('polls/name.html', {'formset': formset, 'questions':questions,'logged_user':logged_user})
为了完成我的模板:
<form method="post" action="">
<table>
{{ formset }}
</table>
<input type="submit" value="Submit" />
</form>
我忘了把它记录在同一时间的所有表格中?
答案 0 :(得分:0)
我会尝试给你一个正确的方法(我不会测试我给你的代码)。
您应该尝试在视图中定义表单数组:
questions = Question.objects.all()
form_list = []
if request.POST:
for question in questions:
current_form = NameForm(request.POST, instance=question)
if current_form.is_valid():
current_form.save()
return HttpResponse('Successfully')
else:
for question in questions:
form_list.append(NameForm(instance=question))
并在模板中显示所有表单:
<form method="post" action="">
{% for form in form_list %}
<table>
{{ form.asp_p }}
</table>
{% endfor %}
<input type="submit" value="Submit" />
</form>
如果您想了解更多详情: