为什么在使用RadioSelect小部件时必须在ModelForm中手动设置选项

时间:2015-01-09 15:04:59

标签: django

我有一个带有CharField的模型,该模型具有分配给它的选项。我想使用RadioSelect()小部件在ModelForm中显示此字段。

如果我在ModelForm的Meta类中为该字段设置窗口小部件,则窗口小部件会正确显示,所有选项都作为单选按钮。 (呜!)

class Meta:
    model = Account
    fields = (
        'newsletter_setting',
    )
    widgets = {
        'newsletter_setting': forms.RadioSelect()
    }

但是如果我尝试在__init__方法上设置小部件,则呈现小部件时没有选择。

def __init__(self, *args, **kwargs):
    super(AccountEditForm, self).__init__(*args, **kwargs)
    self.fields['newsletter_setting'].widget = forms.RadioSelect()

为什么会这样?

1 个答案:

答案 0 :(得分:1)

您需要重新填充新创建的choices的<{1}}属性:

RadioSelect