2017-04-20 121 views
0

我有2個查詢,我必須使用'|'連接並應用最後一個得到 的結果。首先我有國家名單,即歐盟國家。第二我有一個國家,用戶登錄英寸我想加入兩個,並得到結果使用Q.第一個是q= Q(country=auth.country)和第二個是
q2 = Q(country = settings.euCountries),其中settings.enCountries是在這個問題上的Django list.Any幫助表示高度讚賞使用Q對象查詢並使用Q單個對象

+0

使用JOIN這兩款車型設置和權威性必須有關係。存在關係嗎? –

回答

2

如果你需要所有國家

q = [Q(country=auth.country)] + [Q(country=i) for i in settings.euContries] 

然後

一個 OR
import operator 
Model.objects.filter(reduce(operator.or_, q)) 
+0

會嘗試this.seems接近回答:) –

1

我不認爲你需要多個Q()對象在這裏。您可以使用__in查找。

Q(country_in=[auth.country] + settings.euCountries) 

根據您的代碼,你可能不需要Q對象在所有如果你可以做一些這樣的:

queryset = MyModel.objects.filter(country_in=[auth.country] + settings.euCountries)