次のフォームを定義しました
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に渡す方法、または他に必要なことを実現する方法を知っている人はいますか?
アンドリューありがとう