我正在列表中传递多个值,并且我想用该值过滤查询集。我知道Q对象,但不知道如何一起添加过滤器。我想到了类似的东西:
categories = ['1','3','4']
for category in categories:
Q+= Q(id = category)
然后我将过滤查询集queryset.filter(Q)
答案 0 :(得分:3)
如果您只想按ID过滤,我相信您不需要Q
:
queryset.filter(id__in=categories)
答案 1 :(得分:1)
在此特定情况下,如前所述,您不需要Q
,则可以使用__in
过滤器。如果出于任何原因要使用Q
,则将采用以下方式:
from django.db.models import Q
q_list = Q()
for category in categories:
q_list |= Q(id=category)
result_queryset = ModelName.objects.filter(q_list)