开发者

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 %}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜