Я пытаюсь перебрать форму в полях form.fields и для:
{% for field in form.fields %} {{ field }}, {% endfor %}
Я получаю список имен полей («имя, описание ...») вместо HTML-кода, который отображается при использовании следующего:
{{ form.name }}, {{ form.description }}
(выход в этом случае:
Есть намеки? Спасибо!
Вы хотите перебрать «форму», а не «форму.поля». Последний возвращает экземпляры поля, первый возвращает экземпляры BoundField (даже в случае несвязанной формы), которые отображают их виджет HTML.
form.visible_fields и form.hidden_fields являются служебными методами для получения только видимых / скрытых полей формы, но они также возвращают экземпляры BoundField. Они никоим образом не параллельны form.fields (я согласен, что это не самый понятный API).
Итерация «form» вместо «form.fields» решила проблему. Не уверен, почему в документации также приведены примеры, такие как:
{% for field in form.visible_fields %} ...
, что также приводит к пустым сетам. Имеет отношение к тому, что моя форма не связана? не уверен ...
Поле, которое вы получаете, имеет экземпляры django.forms.Field. Чтобы получить представление HTML, вы можете использовать функцию виджета. {{field.widget}}