检查具有OneToOneField的对象是新建的还是已存在的
检查一个对象是否是新的常见方法是测试:
self.pk is not None
正如在Django模型自定义保存方法中,如何识别一个新对象?中所描述的那样。
但是,当这个对象与其他对象有一对一关系时,这种方法就不适用了,比如:
class X(models.Model):
bla = models.OneToOneField(Bla)
那么如果我想创建这个对象实例并保存到数据库,我需要这样做:
x = X(bla=someBla)
x.save()
而且x.pk并不是空的,但x.pk从一开始就等于someBla.pk。
那么有没有办法检查这样的对象是新的还是被编辑过的呢?
2 个回答
-1
在这个情况下,self.pk
在保存方法中会是 None,但要确保你在调用父类的 save() 方法之前,先检查一下这个值。
1
这段代码是用来处理某些数据的。它的主要功能是从一个地方获取信息,然后对这些信息进行一些操作,最后把结果返回给用户。具体来说,它可能会读取文件、处理字符串或者与数据库进行交互。
在编程中,我们经常需要用到这样的代码块,因为它们可以帮助我们自动化一些重复的任务,节省时间和精力。
如果你对这段代码的具体细节感兴趣,可以尝试逐行分析,看看每一部分是如何工作的。这样可以帮助你更好地理解编程的基本概念。
new = not bool(X.objects.filter(pk=self.pk).count())