我试图对表单字段进行分组,以便可以在模板中分别遍历每个组:
# app/forms.py
from django import forms
class CustomForm(forms.Form):
field1 = forms.FieldClass(label="Field 1")
field2 = forms.FieldClass(label="Field 2")
field3 = forms.FieldClass(label="Field 3")
field4 = forms.FieldClass(label="Field 4")
group1 = [field1, field2]
group2 = [field3, field4]
# app/templates/app/formTemplate.html
<form method="POST">
<div>
{% for field in form.group1 %}
<p style="display: block">
{{ field.label }}
<span style="float: right">
{{ field }}
</span>
</p>
{% endfor %}
</div>
<div>
{% for field in form.group2 %}
<p style="display: block">
{{ field.label }}
<span style="float: right">
{{ field }}
</span>
</p>
{% endfor %}
</div>
</form>
据我所知,应显示为:
Field 1 INPUT FIELD 1 HERE
Field 2 INPUT FIELD 2 HERE
Field 3 INPUT FIELD 3 HERE
Field 4 INPUT FIELD 4 HERE
但是我得到的是:
Field 1 <django.forms.fields.CharField object at ...>
Field 2 <django.forms.fields.CharField object at ...>
Field 3 <django.forms.fields.CharField object at ...>
Field 4 <django.forms.fields.CharField object at ...>
另外,如果我使用{% for field in form %}
而不是{% for field in form.groupX %}
,它将按预期方式呈现(但它将在两个div中都包含所有字段)。
有人知道为什么这行不通吗?
我已经搜索过文档和API,找不到任何提及或表明它不起作用的迹象。
我也曾尝试全部使用{{ field.field }}
,{{ field.widget }}
和{{ field.widget.render }}
。
当然,我也乐于接受其他建议,以简洁的方式对表单字段进行分组。