使用modelform_factory遇TypeError:意外参数'extra'求助
解决modelform_factory()报错"unexpected keyword argument 'extra'"的问题
问题原因
modelform_factory是Django中用于创建单个ModelForm类的工具,它并不支持extra参数——这个参数是专门给**表单集(Formset)**设置额外空白表单数量的,你混淆了单个表单生成工具和表单集生成工具的用法。
解决方案
替换modelform_factory为modelformset_factory,这才是生成模型表单集的正确工具:
修改你的forms.py代码最后一行:
# 先导入modelformset_factory from django.forms import modelformset_factory # 用modelformset_factory替换modelform_factory MapSeniorTeachFormset = modelformset_factory(MapSeniorTeach, form=MapSeniorTeachForm, extra=1)
额外注意事项
由于你的自定义表单MapSeniorTeachForm的__init__方法需要接收teach_id参数,在实例化表单集时,需要通过form_kwargs传递这个参数:
# 在视图中实例化表单集时 formset = MapSeniorTeachFormset(form_kwargs={'teach_id': 你的teach_id值})
补充说明
你看到的资料中提到的extra参数,都是针对modelformset_factory(表单集生成器)的,而非modelform_factory(单个表单生成器)。移除extra参数后能正常运行,是因为此时modelform_factory只是生成了单个ModelForm类,符合它的功能定位。
内容的提问来源于stack exchange,提问作者Redmac
相关产品推荐
相关产品推荐

