产生更新查询使用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实现这个?
答
无论是先前的应答者被发现有解决方案的一部分:你应该结合使用update
与F()
:
Model.objects.filter(id=id).update(field=F('field') +1))
注意这样做的中置换UPDATE,不需要任何SELECT。
OP想要以线程安全方式基于现有字段更新属性,这是通过F()表达式完成的。我不认为更新有这样的功能。你确定? – jurgenreza 2013-03-10 08:26:04