在Django表单集中使对象可迭代
这是我的看法:
def manage(request):
qs = Author.objects.none()
AuthorFormSet = modelformset_factory(Author)
if request.method == 'POST':
formset = AuthorFormSet(request.POST, request.FILES)
if formset.is_valid():
formset.save()
return HttpResponseRedirect('/frm/thanks/')
else:
formset = AuthorFormSet(queryset=qs)
return render_to_response("manage.html", {
"formset": formset
})
def thanks(request):
return render_to_response("thanks.html")
这是html模板:
<html>
<body>
<form method="post">
{{ formset.management_form }}
{% for form in formset %}
{{ form.id }}
<ul>
<li>{{ form.name }}</li>
<li>{{ form.title }}</li>
<li>{{ form.birth_date }}</li>
</ul>
{% endfor %}
<p><input type="submit" value="Send message" /></p>
</form>
</body>
</html>
当我访问这个表单时,它出现了这个错误:捕获到类型错误:'AuthorFormFormSet'对象不可迭代
那么,如何让这个对象在django的表单集中可以被迭代呢?
2 个回答
2
这是一个有点老的问题,但我发现
{% for form in formset.form %}
{{ form }}
{% endfor %}
只会显示一个没有标签的表单。
我觉得正确的显示应该是这样的:
{% for form in formset.forms %}
{{ form }}
{% endfor %}
- 注意是 .forms 而不是 .form
0
这个对我有效:
{% for form in formset.form %}