在Django表单集中使对象可迭代

0 投票
2 回答
1298 浏览
提问于 2025-04-16 12:17

这是我的看法:

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

撰写回答