27

Django ModelForm コンストラクターの self.instance とは何を意味し、それに関するドキュメントはどこにありますか?

class MyModelForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super(MyModelForm, self).__init__(*args, **kwargs)
        if self.instance:
        ...
4

3 に答える 3

17

modelModelForm では、self.instance はMeta クラスで指定された属性から派生します。このコンテキストでのあなたselfは明らかにModelFormのサブクラスのインスタンスであり、self.instanceは(フォームをエラーなしで保存すると)指定したモデルクラスのインスタンスですが、例ではそうしていません。

self.instance へのアクセスは機能し__init__ない可能性がありますが、親の__init__おそらく意志を呼び出した後にアクセスします。さらに、インスタンスを直接変更しようとすることはお勧めしません。興味がある場合は、 Githubの BaseModelForm コードをご覧ください。引数instanceを介して新しいフォームを作成するときにも指定できます。instance

于 2013-08-16T03:10:44.033 に答える
12

ドキュメントは 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
于 2013-08-16T03:03:46.437 に答える