Django结合了多个查询集(相同模型)

dea*_*ase 3 python django django-models

我有查询集的列表(全部用于同一模型):

results = Entry.objects.all()
result_elms = []
if city_list:
    for city in city_list:
    result_elms.append(results.filter(address__city__icontains=city))

if county_list:
    for county in county_list:
        results_elms.append(results.filter(address__county__icontains=county))
#other filters here, daynamically created

#how can I combine all results_elms (querysets) into one?
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用|运算符组合来自同一模型的查询集。但是如何将其应用于result_elms列表中的所有元素?

the*_*orn 5

您可以使用Q对象:

from django.db.models import Q

results = Entry.objects.all()
q = Q()
for city in city_list:
    q = q | Q(address__city__icontains=city)
results.filter(q)
Run Code Online (Sandbox Code Playgroud)

该文档(https://docs.djangoproject.com/en/1.7/topics/db/queries/#complex-lookups-with-q)包含更多详细信息和示例。