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

标签 python django django-models

我怎样才能做这样的事情:

products_list = Product.objects.all()

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

这行不通。

最佳答案

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

关于python - 对象请求的 Django 动态过滤器数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2011752/

相关文章:

python - 从现有模型中分解出新模型时创建迁移

python - 如何更新模型但在 Django 中返回未修改的模型?

python - 修改矩阵以包含各种数据特征

python - Scipy.optimize.curvefit 对数函数

python - 如何通过使用 Pandas 定义除法函数来获得结果?

python - 让 django-simple-captcha 工作

Django ORM : filter using a list of objects with an 'and' functionality

python - 如何从模板调用模型函数?

python - 我如何优化读取电池状态的 python 代码

django - 如何使用 BeautifulSoup 搜索出现在另一个元素之前的元素?