查询使用Q对象并使用Q单个对象

时间:2017-04-20 10:43:22

标签: django django-q

我有2个查询,我必须使用'|'加入并应用最后一个来获得 结果。首先我有一个国家列表,即欧盟国家。第二个我有一个用户登录的国家。我想加入两个并使用Q得到结果。第一个是q= Q(country=auth.country)和第二个一个是  q2 = Q(country = settings.euCountries),其中settings.enCountries是一个django列表。非常感谢此事的任何帮助

2 个答案:

答案 0 :(得分:2)

如果您需要所有国家/地区OR

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

然后

import operator
Model.objects.filter(reduce(operator.or_, q))

答案 1 :(得分:1)

我认为你不需要多个Q()个对象。您可以使用__in查找。

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

根据您的代码,如果您可以执行以下操作,则可能根本不需要Q对象:

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