Django - 通过字符串var获取表单字段

时间:2015-06-10 22:54:53

标签: python django forms

我正在尝试正确显示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.fieldnameform[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 %}

我希望有人可以帮我解决这个问题!

1 个答案:

答案 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