python - Django:忽略查询集中特定查询的空格
问题描述
输入:OFG 5T4 WR4 2-3 没有给出 ofg5t4wr42-3 的任何结果。
但是,这ticket_reference
就是保存在我的数据库中的方式,而我将其显示在输入中看到的票证上,以使其更易于阅读。我可以ticket_reference__icontains
用任何其他“过滤器”替换ticket_reference 查询的“忽略”空格吗?
def queryset(self, queryset):
cleaned_data = self.cleaned_data
# Search
search = cleaned_data.get('search')
if search:
queryset = queryset.filter(
Q(company_name__icontains=search) |
Q(first_name__icontains=search) |
Q(last_name__icontains=search) |
Q(email__icontains=search) |
Q(ticket_reference__icontains=search)
)
解决方案
您可以像这样删除空格:
def queryset(self, queryset):
cleaned_data = self.cleaned_data
# Search
search = cleaned_data.get('search')
if search:
queryset = queryset.filter(
Q(company_name__icontains=search) |
Q(first_name__icontains=search) |
Q(last_name__icontains=search) |
Q(email__icontains=search) |
Q(ticket_reference__icontains=search.replace(" ", "")
)
请注意,这仍然是相当有限的,例如搜索“John Doe”将找不到first_name="John"、last_name="Doe" 的条目(因为 first_name 和 last_name 都不包含“John Doe”)。
如果您使用的是 PostgreSQL,我建议您查看有关全文搜索的 Django 文档。
推荐阅读
- javascript - 将反应状态传递给贝宝按钮
- sql - 找到最高的金额,尽管有不止一个达到相同的金额
- android - Android 10 - netstat 执行无法正常工作
- c# - 如何使用 emgucv 提高 tesseract 中 OCR 文本检测的准确性?
- python - UserWarning: Previous unbuffered result was left incomplete warnings.warn("Previous unbuffered result was left incomplete") Python
- docker - Docker 卷挂载失败并出现以下错误
- javascript - 有没有办法可以为自适应卡提供列填充 - 自适应 MS BOT
- javascript - Javascript代码没有响应
- node.js - Jasmine - 从外部文件加载嵌套描述?
- javascript - 从其原型之一访问函数属性