[Cancelled]
我发现#3有时不可靠 在我运行#3之后,偶尔foo没有正确设置(没有提交?)
当我不想运行信号处理程序时,我常常使用#3。
何时使用上述3?
答案 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:
update()
还可以防止在加载对象和调用save().
* update()
在SQL级别进行更新,因此不会调用任何save()
,因此如果您有一个重写的 save()方法,则必须使用get()
和save()
的第一种方式。查看Queryset文档,这里都有解释。