django - Django ORM 搜索多个条件查询
问题描述
当我想用多个条件搜索我的查询集时遇到问题。在我的数据库中,hscode 保存为"0105.14.90"
. 我需要按照这个查询来搜索 hscode "01051490"
。例如:
>>> query = '0105.14.90'
>>> HSCode.objects.filter(hscode=query)
<QuerySet [<HSCode: 0105.14.90>]>
>>> query = '01051490'
>>> HSCode.objects.filter(hscode=query)
<QuerySet []>
我能做的坏事是这样的:
hscodes = []
query = '01051490'
for hscode in HSCode.objects.order_by('-id'):
if query.isdigit() and hscode.hscode == query:
hscodes.append(hscode)
elif hscode.hscode.replace('.', '') == query:
hscodes.append(hscode)
只用ORM怎么处理?
>>> query = '01051490'
>>> HSCode.objects.filter(Q(hscode=query) | Q(???))
<QuerySet [<HSCode: 0105.14.90>]>
解决方案
您可以尝试使用Replace
.
from django.db.models import Value
from django.db.models.functions import Replace
query = '01051490'
HSCode.objects.annotate(
hscode_without_dots=Replace('hscode', Value('.'), Value(''))
).filter(hscode_without_dots=query)
推荐阅读
- visual-studio-code - 在 VS Code 中使用 Prettier 格式化 .ejs 文件
- vue.js - 无法在 Vue 中应用 datalabels chartjs 插件的选项
- scala - scala map 通过键获取值,键不区分大小写
- css - 如何在滑块图像上粘贴导航栏
- variables - 如何使用 Dockerfile 动态设置 ENV 变量
- python - Ruby 数组函数的 Numpy 等价物
- python - 如何从不同的文件类函数导入变量
- android - 如何将多个不同类型的 arraylist 传递给单个 recyclerview 适配器?
- c# - 发送 WNS 和 APNS 推送通知时命中哪个服务器 URL(PushSharp 库)
- javascript - 如何从 javascript 或 html 运行 python 代码?