检查具有OneToOneField的对象是新的还是已存在

时间:2013-02-22 11:43:49

标签: python django orm django-models

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

self.pk is not None

In a django model custom save() method, how should you identify a new object?

中所述

但是当对象与其他对象一对一关系时,情况并非如此,例如:

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

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

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

x.pk不是null,而是从一开始就是x.pk = someBla.pk。

那么有没有可能检查这样的对象是新的还是编辑过的?

2 个答案:

答案 0 :(得分:0)

new  =  not bool(X.objects.filter(pk=self.pk).count())

答案 1 :(得分:-1)

在这种情况下,save方法中的

self.pk将为None,但请确保在X类的save()方法中调用super.save()之前检查之前的