Я пытаюсь сделать что-то довольно простое; Я хотел бы применить «скрытый» стиль к полю формы внутри шаблона django, когда я передал какое-то начальное значение, подобное этому:
form = form_class(initial={'field':data})
Обычно это было бы так:
<li class="{{form.somefield.name}} {% if form.somefield.initial %} hidden{% endif %}>
...
</li>
Но я перебираю формы, поэтому то, что я хочу сделать, выглядит примерно так:
{% for field in form %}
<li class="{{field.name}} {% if field.initial %} hidden{% endif %}">
...
</li>
{% endfor %}
но это не работает, потому что field.initial имеет только значение, определенное как начальное для поля в форме, а не данные, которые были переданы при создании формы. Есть ли хорошее решение для этого, кроме как просто разбить итерацию на отдельные формы?
Некоторые (плохие) решения, о которых я подумал:
- переопределение init для заполнения значений формы self.initial в self.fields;
- написание тегов шаблона под названием {% hideifhasinitial%}
- добавление в форму метода, который использует zip для self и self.initial (не работает, поскольку в self.initial был только один элемент, а в self — 4, он перебирал только 1 элемент, а ключи (имена полей) не т совпадают).