Django ModelForm コンストラクターの self.instance とは何を意味し、それに関するドキュメントはどこにありますか?
class MyModelForm(ModelForm):
def __init__(self, *args, **kwargs):
super(MyModelForm, self).__init__(*args, **kwargs)
if self.instance:
...
model
ModelForm では、self.instance はMeta クラスで指定された属性から派生します。このコンテキストでのあなたself
は明らかにModelFormのサブクラスのインスタンスであり、self.instanceは(フォームをエラーなしで保存すると)指定したモデルクラスのインスタンスですが、例ではそうしていません。
self.instance へのアクセスは機能し__init__
ない可能性がありますが、親の__init__
おそらく意志を呼び出した後にアクセスします。さらに、インスタンスを直接変更しようとすることはお勧めしません。興味がある場合は、 Githubの BaseModelForm コードをご覧ください。引数instance
を介して新しいフォームを作成するときにも指定できます。instance
ドキュメントは django の Web サイトにあります。
https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#overriding-the-clean-method
「インスタンス」へのすべての参照をページで検索するだけで、必要なものが見つかるはずです。
# Load up an instance
my_poll = Poll.objects.get(id=1)
# Declare a ModelForm with the instance
my_form = PollForm(request.POST, instance=my_poll)
# save() will return the model_form.instance attr which is the same as the model passed in
my_form.save() == my_poll == my_form.instance