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
)
在 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
)