3

save()のドキュメントでは、次のように説明されています。

ModelFormのサブクラスは、既存のモデルインスタンスをキーワード引数インスタンスとして受け入れることができます。これが指定されている場合、save()はそのインスタンスを更新します。指定されていない場合、save()は指定されたモデルの新しいインスタンスを作成します

ただし、self.instanceinにはsave()常にオブジェクトがあります。

instanceでは、が存在するのか、新しく作成されたのかをどのように判断できますか?

4

1 に答える 1

6

self.instance.pkモデルが以前に保存されているかどうかを確認できます。ただし、モデルの新しいインスタンスを作成し、保存する前にそのインスタンスでモデルフォームを初期化した場合、これは信頼できない可能性があります。

Django 1.2 の BaseModelForm ソース コードに基づくもう 1 つの可能性はself.instance._adding、モデルが作成された場合は True、それ以外の場合は False をチェックすることです。ただし、これはテストしていないので、YMMV.

最初のオプションが機能する場合は、ModelForms の文書化されていない機能ではなく、それを使用することをお勧めします。これは、将来変更される可能性が低く、おそらくより明確です。

于 2011-03-03T23:30:28.400 に答える