Django: для цикла для итерации полей формы

Я не хочу использовать встроенную генерацию формы django, стремясь указать каждое поле в моем шаблоне, чтобы настроить вывод html.

Как выполнить итерацию по ряду полей формы?

если моя форма выглядит так:

class MyForm(forms.Form):
    main_image = forms.ImageField()
    second_image = forms.ImageField()
    third_image = forms.ImageField()
    fourth_image = forms.ImageField()
    ...

есть ли способ, чтобы написать {% for %} цикл, чтобы я мог перебирать:

{{ form.main_image }}
{{ form.second_image }}
{{ form.third_image }}
{{ form.fourth_image }}

я попробовал следующее, которое казалось логичным, но не сработало:

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

3 ответов


Ну это явно не работает:

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

а это:

{% for field in form %}
    {{ field }}
{% endfor %}

Это должно работать :

{% for field in form %}
  {{ field }}
{% endfor %}

Как только вы пройдете через


лучший способ-использовать два цикла, один для скрытых полей и один для видимых полей:

visibles:

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

скрытый:

{% for hidden in form.hidden_fields %}
    {{ hidden }}
{% endfor %}

таким образом, вы будете иметь больше контроля над элементами интерфейса.