产生更新查询使用Django ORM

产生更新查询使用Django ORM

问题描述:

我需要使用Django ORM来实现这个查询:产生更新查询使用Django ORM

update table set field=field+1 where id=id 

我不whant使用此:

o = model.objects.get(id=id) 
o.field+=1 
o.save() 

,因为它使用的选择和更新时,而不是线程安全的。

如何通过orm实现这个?

无论是先前的应答者被发现有解决方案的一部分:你应该结合使用updateF()

Model.objects.filter(id=id).update(field=F('field') +1)) 

注意这样做的中置换UPDATE,不需要任何SELECT。

您可以使用update,详情可the documentation

+0

OP想要以线程安全方式基于现有字段更新属性,这是通过F()表达式完成的。我不认为更新有这样的功能。你确定? – jurgenreza 2013-03-10 08:26:04