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