2

オブジェクトが新しいかどうかを確認するための一般的なパターンは、次のテストです。

self.pk is not None

django モデルのカスタム save() メソッドで説明されているように、新しいオブジェクトをどのように識別する必要がありますか?

しかし、オブジェクトが他のオブジェクトと 1 対 1 の関係にある場合は正しくありません。たとえば、次のようになります。

class X(models.Model):
     bla = models.OneToOneField(Bla)

次に、このオブジェクト インスタンスを作成してデータベースに保存する場合は、次のようにします。

x = X(bla=someBla)
x.save()

x.pk は null ではなく、最初から x.pk = someBla.pk です。

そのようなオブジェクトが新規または編集されているかどうかを確認する可能性はありますか?

4

2 に答える 2

1
new  =  not bool(X.objects.filter(pk=self.pk).count())
于 2013-02-28T10:34:19.353 に答える
-1

self.pkこの場合、save メソッドの in は None になりますが、クラス X の save() メソッドで super.save() を呼び出す前に、これを確認していることを確認してください。

于 2013-02-22T12:02:56.143 に答える