Skip to main content
 首页 » 编程设计

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

2025年05月04日14xing901022

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

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。

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

请您参考如下方法:

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