Вывод набора форм django в виде строк таблицы
У меня есть набор форм Django, который я хотел бы вывести в виде одной строки таблицы на каждую вложенную форму, например, так:
<form>
{{ feature_formset.management_form }}
<table>
{% for form in feature_formset %}
<tr>
{% for field in form %}
<td>{{ field.name }} {{ field }}</td>
{% endfor %}
</tr>
</table>
{% endfor %}
</form>
Однако каким-то образом (я думаю) автоматический рендеринг полей сбивается оберткой table
.
То, что я ожидал бы получить, будет выглядеть так:
<form>
...
<table>
<tr>
<td>id: <input ...></td>
<td>name: <input ...></td>
<td>foobar: <input ...></td>
</tr>
<tr>
<td>id: <input ...></td>
<td>name: <input ...></td>
<td>foobar: <input ...></td>
</tr>
<tr>
<td>id: <input ...></td>
<td>name: <input ...></td>
<td>foobar: <input ...></td>
</tr>
</table>
{% endfor %}
</form>
Однако я получаю строку формы для первой формы набора форм, а остальные формы просто сбрасывают поля. Каким-то образом {% for field in form %}
не выполняет итерацию должным образом, и я предполагаю, что оставшиеся поля сбрасываются:
<form>
...
<table>
<tr>
<td>id: <input ...></td>
<td>name: <input ...></td>
<td>foobar: <input ...></td>
</tr>
id: <input ...>
name: <input ...>
foobar: <input ...>
id: <input ...>
name: <input ...>
foobar: <input ...>
</table>
{% endfor %}
</form>
Подскажите, почему пользовательский рендеринг вложенных форм / полей не работает так, как задумано?
You close the table too early, so:
<form>
{{ feature_formset.management_form }}
<table>
{% for form in feature_formset %}
<tr>
{% for field in form %}
<td>{{ field.name }} {{ field }}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
</form>
The </table>
is thus put after the {% endfor %}
.