有没有办法在Django中添加Q对象?

时间:2020-10-08 15:15:54

标签: python django

我正在列表中传递多个值,并且我想用该值过滤查询集。我知道Q对象,但不知道如何一起添加过滤器。我想到了类似的东西:

categories = ['1','3','4']

for category in categories:
    Q+= Q(id = category)
   

然后我将过滤查询集queryset.filter(Q)

2 个答案:

答案 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)