Render Django Formset вручную - PullRequest
       51

Render Django Formset вручную

2 голосов
/ 22 января 2020

Когда я визуализирую свой набор форм, используя al oop, все работает.

Когда я пытаюсь визуализировать его вручную, обращаясь к каждому полю отдельно (для целей внешнего интерфейса), форма обрабатывается, но отправка не удалась. Все поля одинаковы, поэтому я предполагаю, что есть скрытое поле, созданное при работе с набором форм, о котором я не знаю.

Вот упрощенный пример моего рабочего кода

<form method="post" enctype="multipart/form-data">
    {% csrf_token %}
{{ formset.management_form }}
{% for p in formset %}
    {{p.as_p}}
    {% endfor %}
</form>

И упрощенный пример того, что не работает

<form method="post" enctype="multipart/form-data">
    {% csrf_token %}
{{ formset.management_form }}
{% for p in formset %}
<span class="form-sub-label-container " style="vertical-align:top">
                    {{p.field1}}
                    <label class="form-sub-label" for="input_12_city" id="sublabel_12_city" style="min-height:13px"></label>
                  </span>
    < span class="another_span">
    {{p.field2}}
 </span>
## etc....
    {% endfor %}
</form>

Есть идеи?

Спасибо.

1 Ответ

2 голосов
/ 22 января 2020

Если вы хотите визуализировать каждое поле формы набора вручную, вам необходимо добавить Django скрытые поля по умолчанию.

<form method="post">
    {% csrf_token %}
    {{ formset.management_form }}
    {% for p in formset %}
        {{ p.id }} # if formset is ModelFormSet
        {{ p.ORDER }} # if can_order=True
        {{ p.DELETE }} # if can_delete=True
        ... # your custom fields
    {% endfor %}
</form>
...