Я пытаюсь сделать что-то довольно простое; Я хотел бы применить «скрытый» стиль к полю формы внутри шаблона 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 элемента и ключей (имен полей ) не совпадает).