Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >Django反转到包含/图标

Django反转到包含/图标
EN

Stack Overflow用户
提问于 2013-03-17 20:30:36
回答 4查看 4.9K关注 0票数 14

解决了this中反向LIKE操作的问题,例如字段名为"Peter Johnson",我们可以通过这样的查询找到它:

代码语言:javascript
代码运行次数:0
复制
select name from user where "Mr. Peter Johnson" like CONCAT('%', name, '%')

有没有办法在Django Q object中做这样的事情(我正在构建一个大查询,所以使用原始的SQL查询将是不合理的)?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-07-18 15:44:05

虽然extras确实为边缘情况提供了扩展的复杂功能,但extras应该被视为最后的手段,并可能在某些时候被弃用。

这可以使用注解和过滤来完成。

代码语言:javascript
代码运行次数:0
复制
from django.db.models import F, Value, CharField

MyUserModel.objects \
     .annotate(my_name_field=Value('Mr. Peter Johnson', output_field=CharField())) \
     .filter(my_name_field__icontains=F('name'))

泛化为:

代码语言:javascript
代码运行次数:0
复制
from django.db.models import F, Value, CharField

@staticmethod
def reverse_case_insensitive_contains(model, search_field_name: str, search_field_value: str):
    return model.objects \
        .annotate(search_field=Value(search_field_value, output_field=CharField())) \
        .filter(search_field__icontains=F(search_field_name))
票数 11
EN

Stack Overflow用户

发布于 2014-10-27 20:38:44

不幸的是,Django的ORM没有任何内置的反向功能。但是.extra()子句可能比原始查询更容易一些。

我使用了类似这样的东西:

代码语言:javascript
代码运行次数:0
复制
qs.extra(
    where=['''%s LIKE %s.%s'''],
    params=(
        "string to match",
        FooModel._meta.db_table,
        "bar_field",
    ),
)

上面代码的问题是

1)它不适用于这种形式的sqlite后端(“语法错误接近。”,它确实适用于在查询中硬编码的表/列名称...这并不总是安全和丑陋的);

2)它要求FooModel.bar_field具有数据%in like style%,这样您就不能匹配任意字符串(这可以用像%s LIKE CONCAT("%", %s.%s, "%")这样的查询来修复,但它会使其特定于DBMS,这不太好)。

反向转换本身可能适用于任何主要的DBMS,但我只在sqlite和postgres上测试了它。

也许有人应该推广我的解决方案,为这个特定的任务创建一个可重用的、与DBMS无关的应用程序,它具有特殊的子类queryset/manager/Q-object……

票数 3
EN

Stack Overflow用户

发布于 2017-06-21 17:00:11

如果您使用的是最新版本的Django (1.10或更高版本)并使用Postgres,则ORM可以处理此问题。Check out the docs.

trigram_similar查找将得到您正在查找的内容:

代码语言:javascript
代码运行次数:0
复制
qs = MyModel.objects.filter(name__trigram_similar='Mr. Peter Johnson')

不要忘记通过启用pg_tgrm扩展来启用此查找。您可以使用django migration来完成此操作。

你还需要在你的INSTALLED_APPS设置中添加'django.contrib.postgres'

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15465858

复制
相关文章
Python批量处理Excel数据后,导入SQL Server
紧接昨天的文章Windows下载安装配置SQL Server、SSMS,使用Python连接读写数据,我们已经安装和配置好了sqlserver,也成功测试了如何利用Python连接、读写数据到数据库。
老表
2022/02/16
4.7K0
Python批量处理Excel数据后,导入SQL Server
将Excel文件数据库导入SQL Server
将Excel文件数据库导入SQL Server的三种方案//方案一: 通过OleDB方式获取Excel文件的数据,然后通过DataSet中转到SQL Server
Java架构师必看
2021/03/22
2.3K0
Excel 日期和时间函数[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168355.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/20
1.8K0
Excel 日期和时间函数[通俗易懂]
mysql导入excel文件_将Excel数据导入MySQL「建议收藏」
去年的投资统计月报数据量庞大,原始表格是xls格式(还是EXECL2003的),单个sheet最大只能放几万行,但数据总量有10万行以上,于是只能存成两个sheet。EXECL2010格式倒是单个sheet可以放得下,可是居然不能将数据完整的从一个sheet复制粘贴到另一个sheet(可能是因为行数太多)。正好想学习一下execl数据导入MySQL数据库的方法,于是开始尝试。
全栈程序员站长
2022/10/02
16.1K0
mysql导入excel文件_将Excel数据导入MySQL「建议收藏」
给Typecho的Sitemap插件做谷歌站长平台爬虫适配(将文章页lastmod的日期时间改为单日期)
因为没有了解过Typecho插件编写规则,所以没有直接动插件,而是采用一种曲线救国的方法。
kr
2022/06/15
3.1K0
一行代码做Excel导入导出
开发中经常会遇到excel的处理,导入导出解析等等,java中比较流行的用poi,但是每次都要写大段工具类来搞定这事儿,此处推荐一个别人造好的轮子【easypoi】,下面介绍下“轮子”的使用。
小尘哥
2018/08/15
4960
一行代码做Excel导入导出
linux 日期转换时间戳_将时间戳转为时间
最近项目上需要用到时间戳,查找了资源终于找到了实现方式,最后时间戳还需要转换成具体的日期格式,查阅了一些资料,还是没有找到具体的实现方式,所以这里总结一些,防止其他小伙伴就掉坑,实现是在freeRTOS系统上的,当前我在linux下尝试实现以下。
全栈程序员站长
2022/11/10
10.5K0
linux 日期转换时间戳_将时间戳转为时间
python将日期转换为时间戳_python – 将日期时间转换为时间戳,然后再返回
>>> local = datetime(2014, 1, 30, 23, 59, 40, 1999)
用户7886150
2021/01/19
3.5K0
Excel实战技巧:使用日期/时间值
了解如何使用Excel日期值可以帮助我们在日常电子表格工作中节省大量时间,本文就来介绍如何使用它们的技巧。
fanjy
2022/11/16
3.9K0
Excel实战技巧:使用日期/时间值
删除重复值,不只Excel,Python pandas更行
在Excel中,我们可以通过单击功能区“数据”选项卡上的“删除重复项”按钮“轻松”删除表中的重复项。确实很容易!然而,当数据集太大,或者电子表格中有公式时,这项操作有时会变得很慢。因此,我们将探讨如何使用Python从数据表中删除重复项,它超级简单、快速、灵活。
fanjy
2022/04/13
6.1K0
删除重复值,不只Excel,Python pandas更行
Word 技术篇-段落的前后间距单位磅改为行,行改为磅
很多时候,比如我们写论文,word的格式是有严格要求的,我们要一丝不苟的按照要求来。因为,这是一种规范,也是是一种礼仪。
小蓝枣
2020/09/23
1.8K0
JS将日期转换为时间戳
1.getTime() 精确到毫秒 let date = new Date() let timeStamp = date.getTime() console.log(timeStamp) // 1606704849115 2.valueOf() 精确到毫秒 let date = new Date() let timeStamp = date.valueOf() console.log(timeStamp) // 1606704906237 3.parse() 精确到秒,毫秒会用000替代 let date
peng_tianyu
2022/12/15
13.3K0
将数据从 SQL Server 导入 Azure Storage Table
最近有个需求要将数据存储从 SQL Server 数据库切换到 Azure Storage 中的 Table。然而不管是 SSMS 还是 Azure Portal 都没有提供直接的导入功能,是不是又想自己写程序去导数据了?其实不用!没有点过数据库天赋的我996了一个晚上,终于找到了点点鼠标就搞定的方法,今天分享给大家。
Edi Wang
2020/06/15
2K0
Word文档段落的前后间距单位磅改为行,行改为磅方法演示
很多时候,比如我们写论文,word 的格式是有严格要求的,我们要一丝不苟的按照要求来。因为,这是一种规范,也是是一种礼仪。
小蓝枣
2023/05/27
1.8K0
Word文档段落的前后间距单位磅改为行,行改为磅方法演示
Jenkins时间修改为北京时间
jenkins安装后时间一直是utc时间,不太方便。 系统管理->脚本命令行 运行: System.setProperty('org.apache.commons.jelly.tags.fmt.tim
乔达摩@嘿
2020/09/11
2.2K0
Jenkins时间修改为北京时间
如何用一行代码实现excel导入导出
早期我们实现excel导入导出的技术方案,可能会不假思索的选用Apache poi、jxl。但他们存在内存消耗大,编码相对繁琐。好在现在阿里开源了EasyExcel,看它的名字大概就可以猜出来,这框架的一个特点就是容易使用。其次easyExcel省内存。下图是使用easyexcel消耗的内存图
lyb-geek
2020/01/16
2.7K0
如何用一行代码实现excel导入导出
100000行级别数据的Excel导入优化之路
由实施 / 用户 将别的系统的数据填入我们系统中的 Excel 模板,应用将文件内容读取、校对、转换之后产生欠费数据、票据、票据详情并存储到数据库中。
程序员大彬
2023/03/01
1.2K0
100000行级别数据的Excel导入优化之路
将excel文件导入到数据库
参考:http://blog.csdn.net/jayxujia123/article/details/13684313
保持热爱奔赴山海
2019/09/18
4.5K0
将excel文件导入到数据库
使用vb将excel导入PowerDesigner,生成表结构
3、 打开PowerDesigner,创建物理模型(Physical Data Model)
用户5640963
2019/07/25
1.7K0
使用vb将excel导入PowerDesigner,生成表结构
点击加载更多

相似问题

Server :将Excel导入Server时日期格式更改为nvchar

13

将日期-时间数据导入excel

12

Excel使用MSQuery将时间格式更改为日期时间

119

如何将日期时间( Server)转换为Excel日期时间?

34

将字符串日期列更改为日期时间Server

26
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文