首页 > 解决方案 > 设置 Django RadioSelect id

问题描述

我正在尝试将键设置为单选按钮选项的 id。一个与M一个与F。怎么做?正确的方法是什么?

genders = {
    "M":"Male",
    "F":"Female"
}


Gender = forms.ChoiceField(widget=forms.RadioSelect(attrs={"label":"Gender", "id":genders.fromkeys}), choices=genders.items)
#Expecting one "id"="M" and one with "id"="F"

标签: python-3.xdjangodjango-views

解决方案


您可以通过覆盖id_for_label方法添加自定义 ID:

class MyRadioSelect(forms.RadioSelect):
    def id_for_label(self, id_, index='0'):
        """
        Use an incremented id for each option where the main widget
        references the zero index.
        """
        return self.choices[int(index)][0]



class MyForm(forms.Form):
    ...

    GENDERS = (
        ("M", "Male"),
        ("F", "Female")
    )
    gender = forms.ChoiceField(widget=MyRadioSelect, choices=GENDERS)
    
    ...

请参见BoundField.id_for_label


推荐阅读