Django对象请求的动态过滤器数量

时间:2010-01-06 08:45:54

标签: python django django-models

我该怎么做:

products_list = Product.objects.all()

for key in keywords:
    products_list = products_list.filter(name__icontains=q)

这不起作用。

1 个答案:

答案 0 :(得分:2)

您正在使用多个AND语句过滤列表,并且您需要OR语句。尝试这样的事情:

from django.db.models import Q
products_list = Product.objects.all()
orq = None    
for key in keywords:
    thisq = Q(name__icontains=q)
    if orq:
        orq = thisq | orq
    else:
        orq = thisq
products_list = products_list.filter(orq)

您可以清理上面的代码,但想法是创建一个名为orq的变量,基本上是Q(name__icontains='prod1') | Q(name__icontains='prod2')