迭代字段时访问django表单的初始值
我试着做一些非常简单的事情;当我传入一些初始值时,我希望对django模板内的表单字段应用“隐藏”样式,如下所示:迭代字段时访问django表单的初始值,django,django-forms,Django,Django Forms,我试着做一些非常简单的事情;当我传入一些初始值时,我希望对django模板内的表单字段应用“隐藏”样式,如下所示: form = form_class(initial={'field':data}) <li class="{{form.somefield.name}} {% if form.somefield.initial %} hidden{% endif %}> ... </li> {% for field in form %} <li c
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 %}
通常情况下,情况如下:
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 %}
发现有一种更简单的方法可以做到这一点
{% if field.name in form.initial.keys %}
这个怎么样
{% for field in form %}
{% if field.name in field.form.initial.keys %}
...
{% endif %}
{% endfor %}
带有初始键的解决方案对我不起作用,因为该字段包含一个空字符串作为值。我必须编写自己的自定义标记:
from django import template
register = template.Library()
@register.simple_tag
def field_empty(field):
if not field.form.initial.get(field.name):
return ' hidden'
return ''
在您的示例中,我将这样使用标记:
<li class="{{ field.name }} {% field_empty field %}">
可以通过值属性访问初始数据,初始数据表示字段的值:
{{field.value}}