检查对象是否为新的常用模式是测试:
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。
那么有没有可能检查这样的对象是新的还是编辑过的?
答案 0 :(得分:0)
new = not bool(X.objects.filter(pk=self.pk).count())
答案 1 :(得分:-1)
self.pk
将为None,但请确保在X类的save()方法中调用super.save()之前检查之前的