代码之家  ›  专栏  ›  技术社区  ›  Natim

对象请求的Django动态筛选器数

  •  3
  • Natim  · 技术社区  · 15 年前

    我该怎么做呢?

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

    这不管用。

    1 回复  |  直到 9 年前
        1
  •  2
  •   Gattster    15 年前

    您正在用多个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') .