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

kap*_*lec 1 python django

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

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

for category in categories:
    Q+= Q(id = category)
   
Run Code Online (Sandbox Code Playgroud)

之后我会过滤我的查询集queryset.filter(Q)

小智 5

正如前面所回答的,在这种特殊情况下您不需要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)
Run Code Online (Sandbox Code Playgroud)