我正在尝试做一些非常简单的事情;当我传递了这样的初始值时,我想对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只有表单中字段的初始值,而不是表单创建时传入的数据。除了将迭代分解为单独的表单之外,还有一个很好的解决方案吗?
我想到的一些(坏的)解决方案:
-
压倒一切
初始化
将值从self.initial填充为self.fields;
-
编写名为%hideifhasInitial%的模板标记
-
向表单中添加一个使用zip on self和self.initial的方法(不起作用,因为self.initial只有一个元素,self只有4个元素,它只迭代了1个元素,键(字段名)不匹配)。