2017-04-20 130 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)