ChoiceField 选项的数据属性
Data attribute for ChoiceField option
我有一个带有下一个字段的表单:
phone_code = forms.ChoiceField(
label=_('Phone code'),
widget=forms.Select(attrs={'class': 'short'})
)
我需要将数据属性添加到 <option>
以存储每个 phone 代码的国家/地区代码。我正在尝试以下一种方式进行:在模板中,我以下一种方式呈现此字段:
<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 是一个数据结构,其中
我为每个选择存储 phone 代码和国家代码。
问题:但是经过错误验证后phone-code的选择值是选择器中的第一个选择,而不是最后一个选择的选择。如果字段由 django 表单({{ form.phone_code }}
)自动呈现,它工作正常,但在这种情况下我必须覆盖 Select 小部件。我怎样才能按照我的方式实现它?
或者我如何在模板中定义应该选择哪个属性?
如果你坚持手动渲染字段,那你也得手动判断选择了哪个项,并在相关项上输出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 %}
我有一个带有下一个字段的表单:
phone_code = forms.ChoiceField(
label=_('Phone code'),
widget=forms.Select(attrs={'class': 'short'})
)
我需要将数据属性添加到 <option>
以存储每个 phone 代码的国家/地区代码。我正在尝试以下一种方式进行:在模板中,我以下一种方式呈现此字段:
<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 是一个数据结构,其中 我为每个选择存储 phone 代码和国家代码。
问题:但是经过错误验证后phone-code的选择值是选择器中的第一个选择,而不是最后一个选择的选择。如果字段由 django 表单({{ form.phone_code }}
)自动呈现,它工作正常,但在这种情况下我必须覆盖 Select 小部件。我怎样才能按照我的方式实现它?
或者我如何在模板中定义应该选择哪个属性?
如果你坚持手动渲染字段,那你也得手动判断选择了哪个项,并在相关项上输出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 %}