如何在Django表单的选择中呈现选项?
我想用Django呈现两个选择(一个是多重选择,另一个是简单选择),并用Materialize对其进行定制。我成功地编写了以下代码: 在我的表格里如何在Django表单的选择中呈现选项?,django,python-3.x,django-forms,materialize,Django,Python 3.x,Django Forms,Materialize,我想用Django呈现两个选择(一个是多重选择,另一个是简单选择),并用Materialize对其进行定制。我成功地编写了以下代码: 在我的表格里 class ZonesForm(forms.Form): zones_options = ( (1, 'Zone 1'), (2, 'Zone 2'), (3, 'Zone 3'), (4, 'Zone 4') ) zones = forms.MultipleCh
class ZonesForm(forms.Form):
zones_options = (
(1, 'Zone 1'),
(2, 'Zone 2'),
(3, 'Zone 3'),
(4, 'Zone 4')
)
zones = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=zones_options)
conn_options = (
(1, 'ABCDE'),
(2, 'FGHIJ'),
)
connections = forms.ChoiceField(choices=conn_options)
在my zones.html中
{% block content %}
<div class="container">
<div class="row">
<form method="post">
<div class="input-field col s6">
<select multiple name="{{ form.zones.name }}">
{% for opt in form.zones %}
<option value="{{ opt.id }}">{{ opt.label }}</option>
{% endfor %}
</select>
<label>Zones</label>
</div>
<div class="input-field col s6">
<select name="form.connections.name">
{% for opt in form.connections %}
<option value="{{ opt.id }}">{{ opt }}</option>
{% endfor %}
</select>
<label>Connection</label>
</div>
</form>
</div>
</div>
{% endblock %}
{%block content%}
{%用于选择加入form.zones%}
{{opt.label}}
{%endfor%}
地带
{%用于opt-in form.connections%}
{{opt}}
{%endfor%}
联系
{%endblock%}
我的问题是:当呈现页面时,第一次选择(如预期的那样)会有4个复选框,并且没有名称(所有选项都为空)。对于第二个选择,我得到4个选项(一个空白,一个带有'ABCDE',一个空白,一个带有'FGHIJ')
我怀疑问题出在属性上。我没有为它们获取正确的值(我尝试了opt.label、opt.text、opt.choices、opt.value、opt…)。如何正确访问它们
另一个问题:有没有一种很好的调试方法?我是Django和web开发人员的新手。我尝试导入pdb;pdb.set_trace()进行调试,但我无法通过断点来浏览其他方法(我使用的是PyCharm)。我设法解决了这个问题,如果有人遇到类似问题,我会发布这个答案 对于第一个选择,在forms.py中,我将
widget=forms.CheckboxSelectMultiple
替换为widget=forms.SelectMultiple
。令人惊讶的是,复选框被正确呈现。我不确定复选框SelectMultiple
和SelectMultiple
之间有什么区别,但后面的选项有效=)
对于这两种情况,我都必须更改zones.html。现在看起来是这样的:
{% block content %}
<div class="container">
<div class="row">
<form method="post">
<div class="input-field col s6">
{{ form.zones }}
<label>Zones</label>
</div>
<div class="input-field col s6">
{{ form.connections }}
<label>Connection</label>
</div>
</form>
</div>
</div>
{% endblock %}
{%block content%}
{{form.zones}}
地带
{{form.connections}}
联系
{%endblock%}
我设法解决了这个问题,我正在发布这个答案,以防有人遇到类似的问题
对于第一个选择,在forms.py中,我将widget=forms.CheckboxSelectMultiple
替换为widget=forms.SelectMultiple
。令人惊讶的是,复选框被正确呈现。我不确定复选框SelectMultiple
和SelectMultiple
之间有什么区别,但后面的选项有效=)
对于这两种情况,我都必须更改zones.html。现在看起来是这样的:
{% block content %}
<div class="container">
<div class="row">
<form method="post">
<div class="input-field col s6">
{{ form.zones }}
<label>Zones</label>
</div>
<div class="input-field col s6">
{{ form.connections }}
<label>Connection</label>
</div>
</form>
</div>
</div>
{% endblock %}
{%block content%}
{{form.zones}}
地带
{{form.connections}}
联系
{%endblock%}