我怎么能这样做:

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')

09-13 14:12