我有一个包含下一个字段的表单:
phone_code = forms.ChoiceField(
label=_('Phone code'),
widget=forms.Select(attrs={'class': 'short'})
)
我需要将数据属性添加到<option>
以存储每个电话代码的国家/地区代码。我正在尝试以下一种方式执行此操作:在模板中,我将使用下一个方式渲染此字段:
<select name="{{ phone_code_field.name }}">
{% for choice in phone_code_field.field.extra_data %}
<option data-choice-code="{{ choice.0.0 }}" value="{{ choice.0.1 }}">{{ choice.1 }}</option>
{% endfor %}
</select>
extra_data是一个数据结构 我为每个选项存储电话代码和国家/地区代码。
问题:但在错误验证后,选择的电话代码值是选择器中的首选,而不是最后选择的选项。如果字段由django表单({{ form.phone_code }}
)自动呈现,则它可以正常工作,但在这种情况下,我必须覆盖Select小部件。我怎么能按照我的方式实现这个呢?
或者我如何在模板中定义应该选择哪个属性?
答案 0 :(得分:0)
如果您坚持手动渲染字段,则还必须手动确定选择了哪个项目,并在相关项目上输出selected
属性。
{% for choice in phone_code_field.field.extra_data %}
<option {% if phone_code_field.field.value == choice.0.1 %}selected="selected"{% endif %} data-choice-code="{{ choice.0.0 }}" value="{{ choice.0.1 }}">{{ choice.1 }}</option>
{% endfor %}