Создание объекта, повторяемого в наборах форм django - PullRequest
0 голосов
/ 22 февраля 2011

Вот мой взгляд:

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>

Когда я получаю доступ к форме, она выдает эту ошибку: Caught TypeError while rendering: 'AuthorFormFormSet' object is not iterable

Итак, как сделать объект повторяемым в наборах форм django?

Ответы [ 2 ]

2 голосов
/ 07 марта 2012

Это довольно освежающий старый вопрос, но я узнал, что

{% for form in formset.form %}
    {{ form }}
{% endfor %}

будет отображать только одну форму без меток. ИМО правильный рендеринг должен выглядеть так:

{% for form in formset.forms %}
    {{ form }}
{% endfor %}
  • уведомление .forms вместо .form
0 голосов
/ 23 февраля 2011

Это сработало для меня:

{% for form in formset.form %}
...