遍历模板中的表单字段列表

时间:2020-04-18 20:45:59

标签: django django-forms django-templates

我试图对表单字段进行分组,以便可以在模板中分别遍历每个组:

# 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 }}

当然,我也乐于接受其他建议,以简洁的方式对表单字段进行分组。

0 个答案:

没有答案