8
実際の値を見つけるためにdbをヒットせずに、データベースの値を増やしたいとします。効果的に、私はこのようなことをしたいと思います...しかし、これはうまくいきません。どんなエレガントなソリューションですか?djangoデータベースの値を増やす
P.objects.filter(username='John Smith').update(accvalue+=-50)
THANKS!
実際の値を見つけるためにdbをヒットせずに、データベースの値を増やしたいとします。効果的に、私はこのようなことをしたいと思います...しかし、これはうまくいきません。どんなエレガントなソリューションですか?djangoデータベースの値を増やす
P.objects.filter(username='John Smith').update(accvalue+=-50)
THANKS!
DjangoのF() objectをご覧ください。
あなたは、これはあなたがやりたいようにデータベースのネイティブUPDATE
メソッドを使用します
>>> from django.db.models import F
>>> P.objects.filter(username="John Smith").update(accvalue=F("accvalue") + 50)
すなわち
&過去のフィールドの値に基づいて値を更新するupdate()
方法とそれを組み合わせることができます。
ありがとうございました!これはどのようにパフォーマンスに影響しますか? – snakesNbronies
通常の保存メソッドを使用し、そのスレッドセーフの上に置いておくと便利です:) – bx2
再度照会せずにインクリメントされた値を取得できますか?これにより、同時アクセスの問題を回避できます – Don