django: form.fields не перебирает поля экземпляра - PullRequest
4 голосов
/ 22 марта 2009

Я пытаюсь перебрать форму в полях form.fields и для:

{% for field in form.fields %}
   {{ field }}, 
{% endfor %}

Я получаю список имен полей («имя, описание ...») вместо HTML-кода, который отображается при использовании следующего:

{{ form.name }}, {{ form.description }}

(выход в этом случае:

Есть намеки? Спасибо!

Ответы [ 3 ]

10 голосов
/ 22 марта 2009

Вы хотите перебрать «форму», а не «форму.поля». Последний возвращает экземпляры поля, первый возвращает экземпляры BoundField (даже в случае несвязанной формы), которые отображают их виджет HTML.

form.visible_fields и form.hidden_fields являются служебными методами для получения только видимых / скрытых полей формы, но они также возвращают экземпляры BoundField. Они никоим образом не параллельны form.fields (я согласен, что это не самый понятный API).

2 голосов
/ 22 марта 2009

Итерация «form» вместо «form.fields» решила проблему. Не уверен, почему в документации также приведены примеры, такие как:

{% for field in form.visible_fields %}
...

, что также приводит к пустым сетам. Имеет отношение к тому, что моя форма не связана? не уверен ...

0 голосов
/ 22 марта 2009

Поле, которое вы получаете, имеет экземпляры django.forms.Field. Чтобы получить представление HTML, вы можете использовать функцию виджета. {{field.widget}}

...