在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()方法返回None时,有没有办法知道保存的实际更新是否没有比较对象的两种状态(保存前后)?
答案 0 :(得分:0)
get_or_create不会更新,默认值用于初始获取查询中不需要的参数。
根据django docs:
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()
答案 1 :(得分:0)
get_or_create
方法不会对现有数据库条目进行更新,因此如果您没有手动设置/更改某些实例,则调用newobject.save()
对已创建的实例没有影响属性。另外,您的get_or_create
语法错误,请查看docs。注意,它应该是默认值而不是默认值。
new_object, created = MyModel.objects.get_or_create(
pk=object.id,
defaults=object_dict
)