2012-10-14 39 views
2

我搜索的文檔,我無法找到一個簡單的方法來運行這樣的查詢:Django的:選擇列的總和等於某個常數

SELECT columns FROM table WHERE col_a + col_b = @param 

我知道我可以使用.extra(where=['col_a + col_b = %s' % whatever]),但這不是參數化的。

在ORM中有沒有辦法做到這一點(即沒有0​​)?否則,運行該查詢的最乾淨的方式是什麼?

回答

0

您可以嘗試使用F()表達式進行篩選。 在這裏看到:https://docs.djangoproject.com/en/dev/topics/db/queries/#filters-can-reference-fields-on-the-model

試試這個:

from django.db.models import F 
Something.objects.filter(col_a=CONST-F('col_b')) 

還沒有嘗試過,但它可能工作是這樣的:如果CONST = 10,如果列B是例如8,然後取但僅在列A是2.

+0

是的,我想到了這一點。我覺得很難閱讀,如果我的表情更復雜(因爲它必須完全重新排列),情況會變得更糟。它仍然可能是最好的解決方案。 – Flash