9

django orm を使用してこのクエリを実装する必要があります。

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

私はこれを使いたくない:

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

select と when update を使用し、スレッドセーフではないためです。

orm経由でこれを実装する方法は?

4

4 に答える 4

35

前の回答者は両方ともソリューションの一部を持っています:updateと組み合わせて使用​​する必要がありますF():

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

これは、SELECT をまったく必要とせずにインプレース UPDATE を行うことに注意してください。

于 2013-03-10T11:05:08.970 に答える
2

を使用できますupdate。詳細はドキュメントに記載されています

于 2013-03-10T07:24:43.613 に答える