Django Form报错:BaseForm.__init__()收到意外关键字参数choixF
解决Django表单自定义kwargs参数报错问题
问题原因
你当前的代码在调用父类__init__方法时,没有先移除自定义的choixF参数,而Django的BaseForm.__init__不识别这个额外参数,因此抛出BaseForm.__init__() got an unexpected keyword argument 'choixF'错误。
修正后的表单代码
class SelectionFournisseur(forms.Form): Fournisseur = forms.ChoiceField(choices=()) def __init__(self, *args, **kwargs): # 先从kwargs中取出自定义参数,避免传给父类 choixF = kwargs.pop("choixF", None) # 调用父类构造方法,此时kwargs已不含自定义参数 super().__init__(*args, **kwargs) # 仅当获取到choixF时才更新选项 if choixF is not None: self.fields['Fournisseur'].choices = choixF
视图代码保持不变
formF = SelectionFournisseur(choixF=choices)
关键说明
- 必须先执行
kwargs.pop()移除自定义参数,再调用父类的__init__方法,确保传给父类的参数都是它能识别的。 - 添加
if choixF is not None的判断,避免当未传入该参数时将选项设为None导致异常。
内容的提问来源于stack exchange,提问作者Rafik Bouloudene
相关产品推荐
相关产品推荐

