2012-07-03 75 views
8

我想增加數據庫中的值,而不必在db上執行命中找到實際值。實際上,我想要做這樣的事情......但這不起作用。優雅的解決方案在django數據庫中增加值

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

謝謝!

回答

10

查看Django的F() object

你可以用update()方法結合它的基礎上的previos字段值更新值即

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

這將使用數據庫的本地UPDATE方法做你想做的事情。

+0

謝謝!這是如何表現的? – snakesNbronies

+0

比使用常規保存方法更好,並且在線程安全的基礎上:) – bx2

+2

我可以在不查詢再次查詢的情況下獲得遞增的值嗎?這樣可以避免併發訪問問題 – Don