2017-04-19 71 views
0

我有一個模型,我希望按其屬性a進行篩選。該模型還有另一個屬性b。我試圖篩選a爲0的條目或a的值爲b屬性(顯然,對於每一行)。我如何過濾另一列的值?Django QuerySet:按另一個字段的值進行篩選

以下是我已經試過了,而缺少的部分:

MyModel.objects.filter(Q(a=0) | Q(a=???)) # ??? is to be the value of the `b` column 

我使用Django 1.4,我知道這是一個古老的版本不再支持,但遺憾的是執行升級不起來我。

+0

您有更改模型的選項嗎? –

+0

F表達式在1.4中可用,它正是你正在尋找的。 –

回答

2

我想你可以使用一個F expression與您的問與答對象:

MyModel.objects.filter(Q(a=0) | Q(a=F('b'))) 

我還會建議你現在安排升級,否則,您將錯過其他功能和安全修復程序。

+0

呵呵,出於某種原因,我認爲'F'表達式最近被引入了方式。謝謝。正如我所提到的那樣,升級絕對不是我想要的,我希望是。 – dabadaba

1

您可以使用F模型來比較兩個字段。

from django.db.models import F 
MyModel.objects.filter(a__exact = F('b')) 

因此,對於你的聯合查詢,你可以使用像,

MyModel.objects.filter(Q(a=0) | Q(a__exact=F('b'))) 
+0

這是否檢查兩個值是否相同? –

+0

哦,你的意思是a的值等於b的屬性,對不起,你的問題不清楚,讓我看看我能做些什麼。 – Osiris92

+0

在回答之前請仔細閱讀問題。 – Iqbal

相關問題