我怎么能这样做:
products_list = Product.objects.all()
for key in keywords:
products_list = products_list.filter(name__icontains=q)
这不管用。
最佳答案
您正在使用多个和语句筛选列表,并且需要或语句。试试这样的:
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')
。