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

标签 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。

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

最佳答案

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

关于python - 检查具有 OneToOneField 的对象是新的还是已经存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15023443/

相关文章:

python - SQL 不显示更新的表

Python - 无法连接到我的 IP

django - 禁用 Django 中选定页面的 session /cookie

Django 模型中的多态性

entity-framework - Entity Framework 代码优先的性能

python - "OSError: dlopen(libSystem.dylib, 6): image not found"(OS X + macports + celery 3.1.7)

python - 来自多个 worker 的 Gunicorn 日志记录

python - Django MySQL 如何停止外键约束?

orm - 如何使用 ClojureQL 向表添加索引?

php - Laravel 4.2 中 whereHas 查询的 orderBy