2

检查对象是否为新对象的常见模式是测试:

self.pk is not None

在 django 模型自定义 save() 方法中所述,您应该如何识别新对象?

但是当对象与其他对象一对一关系时,它就不是真的了,比如说:

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

然后,如果我想创建这个对象实例并将其保存到数据库中,我会这样做:

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

而且 x.pk 从一开始就不是空的,而是 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在这种情况下,in save 方法将为 None ,但请确保在类 X 的 save() 方法中调用 super.save()之前检查这一点。

于 2013-02-22T12:02:56.143 回答