django,属性更新模型实例

时间:2015-12-19 14:45:50

标签: python django django-models django-queryset

[Cancelled] 

我发现#3有时不可靠 在我运行#3之后,偶尔foo没有正确设置(没有提交?)

当我不想运行信号处理程序时,我常常使用#3。

何时使用上述3?

1 个答案:

答案 0 :(得分:3)

如果您只是更新记录而不需要对模型对象执行任何操作,则最有效的方法是调用update(),而不是将模型对象加载到内存中。例如,而不是这样做:

instance = Entry.objects.get(id=10)
instance.comments_on = False
instance.save()

这样做:

Entry.objects.filter(id=10).update(comments_on=False)

NB:

  1. 使用update()还可以防止在加载对象和调用save(). *
  2. 之间的短时间内数据库中某些内容可能发生变化的竞争条件
  3. update()在SQL级别进行更新,因此不会调用任何save(),因此如果您有一个重写的 save()方法,则必须使用get()save()的第一种方式。
  4. 查看Queryset文档,这里都有解释。