我写了一个动态表单:
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
如果没有 RadioSelect 小部件,一切似乎都可以正常工作,但是有了它,会发生以下错误:
最佳答案
在创建字段后设置小部件时,它必须是小部件实例,而不是类本身。但是你必须自己设置选择:
choice_field.widget = forms.RadioSelect(choices=...)
最好,您可以在构建字段时提供小部件类:
choice_field = forms.ModelChoiceField(queryset=question.choice_set, widget=forms.RadioSelect)
关于python - use_required_attribute() 缺少 1 个必需的位置参数 : 'initial' django forms,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42745403/