【发布时间】:2023-03-19 06:26:01
【问题描述】:
我定义了以下表单
class MyForm(ModelForm):
def __init__(self, readOnly=False, *args, **kwargs):
super(MyForm,self).__init__(*args,**kwrds)
if readOnly:
Do stuff to make the inputs readonly
当我在视图中将 MyForm 实例化为表单时,它可以完美运行form = MyForm(readOnly=True, instance=ModelA)
但是当我尝试在 inlineformset_factory 中使用它时Formset = inlineformset_factory(ModelA, ModelB form=MyForm(readOnly=True))
我收到错误“NoneType 对象不可调用”。
我认为这是因为在没有模型实例的情况下初始化表单
因为 MyForm 正在内联中初始化
我知道问题在于我在内联调用中使用 MyForm 的方式
因为如果我执行以下任一操作,我都会收到相同的错误
Formset = inlineformset_factory(ModelA, ModelB form=MyForm(readOnly=True))Formset = inlineformset_factory(ModelA, ModelB form=MyForm())
但如果我这样做,它会起作用Formset = inlineformset_factory(ModelA, ModelB form=MyForm)
显然 readOnly 参数默认为 False 并且我的输入没有改变。 有谁知道我如何使用 inlineformset_factory 将 readOnly 参数传递给 MyForm 或者我如何实现我想要的?
谢谢 安德鲁
【问题讨论】: