Django:如何判断一个对象是否在 .save() 之后被更新

Django: How to tell if an object has been updated after .save()

在 Django 1.5 中,我使用以下代码将一些数据存储到我的模型中:

new_object, created = MyModel.objects.get_or_create(
    pk = object.id,
    default = object_dict
)

if created:
   # ... code that creates a log  ... 
else:
    newobject.save()
    # ... code that creates a log IF the record has been updated

作为save()方法returns None,有没有办法在不比较对象的两个状态(保存之前和之后)的情况下知道是否实际更新了保存?

get_or_create 不更新,默认值用于您在初始 get 查询中不需要的参数。

根据 django 文档:

defaults = kwargs.pop('defaults', {})
params = dict([(k, v) for k, v in kwargs.items() if '__' not in k])
params.update(defaults)
obj = self.model(**params)
obj.save()

get_or_create 方法不会对现有数据库条目进行更新,因此调用 newobject.save() 对已创建的实例没有影响,如果您没有手动 set/change一些实例属性。另外你的 get_or_create 语法是错误的,看看 docs。注意,应该是defaults而不是default.

new_object, created = MyModel.objects.get_or_create(
    pk=object.id,
    defaults=object_dict
)