2012-07-03 12 views
8

実際の値を見つけるためにdbをヒットせずに、データベースの値を増やしたいとします。効果的に、私はこのようなことをしたいと思います...しかし、これはうまくいきません。どんなエレガントなソリューションですか?djangoデータベースの値を増やす

P.objects.filter(username='John Smith').update(accvalue+=-50) 

THANKS!

答えて

10

DjangoのF() objectをご覧ください。

あなたは、これはあなたがやりたいようにデータベースのネイティブUPDATEメソッドを使用します

>>> from django.db.models import F 
>>> P.objects.filter(username="John Smith").update(accvalue=F("accvalue") + 50) 

すなわち

&過去のフィールドの値に基づいて値を更新する update()方法とそれを組み合わせることができます。

+0

ありがとうございました!これはどのようにパフォーマンスに影響しますか? – snakesNbronies

+0

通常の保存メソッドを使用し、そのスレッドセーフの上に​​置いておくと便利です:) – bx2

+2

再度照会せずにインクリメントされた値を取得できますか?これにより、同時アクセスの問題を回避できます – Don