我正在嘗試顯示一堆表單,其中包含一堆字段。我試圖將這些字段組合在一起,以便有一個父字段,然後在父字段下面有一些子字段。我將如何讓Django表單字段有孩子?
因此,我所做的是在我的表單中創建了一個字典,父字段作爲訪問子字段列表的鍵。
這裏是我的形式:
class DetailForm(Form):
a = BooleanField(label='a')
a1 = BooleanField(label='a1')
b = BooleanField(label='b')
b1 = BooleanField(label='b1')
b2 = BooleanField(label='b2')
c = BooleanField(label='c')
c1 = BooleanField(label='c1')
c2 = BooleanField(label='c2')
c3 = ChoiceField(choices=((1,'Default Text'),(0,'Custom Text'),), widget=RadioSelect, label='c3')
fields_dict = {a: [a1],
b: [b1, b2],
c: [c1, c2, c3]
}
這是我的觀點:
def bfa_report(request, template):
form = DetailForm()
fields_dict = form.fields_dict
return render_to_response(template, {
'form': form,
'fields_dict': fields_dict
}, context_instance=RequestContext(request))
下面是我在做什麼在我的模板:
<div data-dojo-type="dijit/form/Form" id="parameters_form" data-dojo-id="parameters_form" encType="multipart/form-data" action="" method="">
{% csrf_token %}
{% for key, value in fields_dict.items %}
<div>{{ key }}</div>
<div>
{% for val in value %}
<div>
{{ val }}
</div>
{% endfor %}
</div>
{% endfor %}
</div>
當我去該頁面,我最終以此顯示在頁面上:
a
<django.forms.fields.BooleanField object at 0x7f3aa4444cd0>
b
<django.forms.fields.BooleanField object at 0x7f3aa4442490>
<django.forms.fields.BooleanField object at 0x7f3aa4442d90>
c
<django.forms.fields.BooleanField object at 0x7f3aa4442e10>
<django.forms.fields.BooleanField object at 0x7f3aa4442e90>
<django.forms.fields.ChoiceField object at 0x7f3aa4442f10>
該字段沒有顯示。我相信有更好的方法來做我想做的事情。我如何獲得按照他們的方式分組的字段?
我正在嘗試創建一個通用模板來執行此操作。我有幾種需要顯示的表單,我不想爲每個表單創建一個單獨的模板。
你不渲染實例化的窗體,但是你正確地聲明瞭你的域字典。 – Jingo