我正在尝试正确显示Django的表单。我的表单有多个段,一组看起来像这样:
aant_inw = forms.BooleanField(widget=forms.HiddenInput(), required=True, label="Aantal inwoners")
aant_inw_min = forms.IntegerField(required=False)
aant_inw_max = forms.IntegerField(required=False)
aant_inw_priority = forms.FloatField(required=False)
问题是我只遍历隐藏的字段,然后在该行中我想添加另外3个字段(一旦选中此字段,该组的其他3个表单字段将变为可见)。
我考虑过创建一个将字符串存储到表单中正确字段的var。因此,将_min,_max,_priority添加到原始html_name作为前缀。我不太确定如何做到这一点。我尝试使用我的var以多种方式获取正确的表单。我尝试了form.fieldname
,form[fieldname]
和form.{{fieldname}}
。但这些似乎都没有起作用,并且没有任何讽刺。下面是我正在尝试做的一小部分。
{% with fieldname=field.html_name|add:'_min' %}
<tr class="collapse" id="{{ field.html_name }}">
<td>{{ field.label }}</td>
<td>{% render_field form.{{fieldname}} class+="form-control" %}</td>
<td>{% render_field form.fieldname class+="form-control" %}</td>
</tr>
{% endwith %}
我希望有人可以帮我解决这个问题!
答案 0 :(得分:1)
我的选择并不漂亮,但必须有效:
{% with fieldname=field.html_name|add:'_min' %}
<tr class="collapse" id="{{ field.html_name }}">
<td>{{ field.label }}</td>
{% if fieldname == "aant_inw_min" %}
<td>{% render_field form.aant_inw_min class+="form-control" %}</td>
{% elif fieldname == "aant_inw_max" %}
<td>{% render_field form.aant_inw_max class+="form-control" %}</td>
{% elif fieldname == "aant_inw_priority" %}
<td>{% render_field form.aant_inw_priority class+="form-control" %}</td>
{% endif %}
</tr>
{% endwith %}
或只创建一个custom templatetag。