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