python - Django - 如何将多个过滤器参数组合在一起,其中参数的数量是可变的
问题描述
我正在尝试在 Django 上实现搜索功能。如果我的查询是:“ab c”,那么我想搜索:
select * from table where col LIKE '%a%' and col LIKE '%b%' and col LIKE '%c%'
我知道我可以做到这一点
table.objects.filter(col__icontains('a'))
但是我如何使这个工作适用于 a、b 和 c。我不能硬编码参数的数量。可能有 a、b、c、d 或任意数量的搜索词。?
解决方案
您可以在循环中链接查询集上的过滤器以获取多个AND
过滤器
query = 'a b c'
queryset = table.objects.all()
for part in query.split():
queryset = queryset.filter(col__icontains=part)
推荐阅读
- python - 如何在 Django 中使用过滤后的数据填充表
- python - 从 pandas 分组数据的子组中尝试新列,loc 函数问题
- python - 计算数据框中最后一行的倒数并将其作为“新”最后一行包含在数据框中
- javascript - 为什么 .findByIdAndUpdate 会绕过 mongoose 中间件?
- wordpress - Wordpress:htacess http 到 https 不适用于非 www
- python - 缩短 Python 列表推导
- javascript - 在 JavaScript 中编写正则表达式以匹配 $ 变量前缀语法(如在 Bash 脚本中找到)
- php - 使用以下 php 代码从数据库数组中获取特定值
- php - 重新排列 PHP 数组并返回 3 个最低的
- javascript - 为什么 Angular Data Table Schematic connect 方法会对源数组数据进行两次操作?