use_required_attribute()缺少1个必需的位置参数:“ initial” django形式

R3t*_*rnz 4 python forms django

我写了一个动态表格:

class VoteForm(forms.Form):
    def __init__(self, *args, **kwargs):
        question = kwargs.pop('instance', None)
        super().__init__(*args, **kwargs)

        if question:
            if question.allow_multiple_votes:
                choice_field = forms.ModelMultipleChoiceField(queryset=question.choice_set)
            else:
                choice_field = forms.ModelChoiceField(queryset=question.choice_set)
            choice_field.widget = forms.RadioSelect
            choice_field.label=False
            choice_field.empty_label=None
            choice_field.error_messages={'required': _('No choice selected.'),
                                         'invalid': _('Invalid choice selected.')}
            self.fields['choice'] = choice_field
Run Code Online (Sandbox Code Playgroud)

没有RadioSelect窗口小部件,一切似乎都可以正常工作,但是使用它,会发生以下错误:

TypeError:use_required_attribute()缺少1个必需的位置参数:“ initial”

alb*_*bar 5

在创建字段后设置窗口小部件时,它必须是窗口小部件实例,而不是类本身。但是您必须自己设置选择:

   choice_field.widget = forms.RadioSelect(choices=...)
Run Code Online (Sandbox Code Playgroud)

最好在构造字段时提供小部件类:

   choice_field = forms.ModelChoiceField(queryset=question.choice_set, widget=forms.RadioSelect)
Run Code Online (Sandbox Code Playgroud)