我该怎么做:
products_list = Product.objects.all()
for key in keywords:
products_list = products_list.filter(name__icontains=q)
这不起作用。
答案 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')
。