Making an object iterable in django formsets
Here is my view:
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")
The html template:
<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>
When I access the form it gives this error: Caught TypeError while rendering: 'AuthorFormFormSet' object is not iterable
So how to make object iterable under django formsets?
It's kind of refreshing old question, but I found out that
{% for form in formset.form %}
{{ form }}
{% endfor %}
will render only one form with no labels. IMO correct rendering should go like this:
{% for form in formset.forms %}
{{ form }}
{% endfor %}
- notice .forms instead of .form
This worked for me:
{% for form in formset.form %}
精彩评论