开发者

Making an object iterable in django formsets

开发者 https://www.devze.com 2023-02-12 07:04 出处:网络
Here is my view: def manage(request): qs = Author.objects.none() AuthorFormSet = modelformset_factory(Author)

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

精彩评论

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