Django filter中contains 用法
来源:互联网 发布:学软件测试工程师 编辑:程序博客网 时间:2024/05/21 22:38
用PYTHON ,DJANGO 做站,在通常的情况下,需要用到 orM 的查询方法,比如object.filter(tag__contains='keywords')....
在这种情况下,如果你跟踪 sql 语句,你会发现,SQL 语句会生成 select .... like bianry '%keywords%', 如果是这样的语句,在某些情况是下是会出问题的,也就是说查询出来的数据可能会比你预计的少。
如果你用 raw sql 查总数 select count(*) from table where like '%keywords%' 得到数量可能比你用ORM 采用上面的方式得到的数据多,问题就在于生成的条件问题。
后来查询了 django 说明,如果把ORM 语句变成:object.filter(tag__icontains='keywords').... 就好了。
参考说明,就可以写自己的语句了。
在这种情况下,如果你跟踪 sql 语句,你会发现,SQL 语句会生成 select .... like bianry '%keywords%', 如果是这样的语句,在某些情况是下是会出问题的,也就是说查询出来的数据可能会比你预计的少。
如果你用 raw sql 查总数 select count(*) from table where like '%keywords%' 得到数量可能比你用ORM 采用上面的方式得到的数据多,问题就在于生成的条件问题。
后来查询了 django 说明,如果把ORM 语句变成:object.filter(tag__icontains='keywords').... 就好了。
注意contains ,icontains 的区别. 后来从django官网查到了说明:
operators = { 'exact': '= %s', 'iexact': 'LIKE %s', 'contains': 'LIKE BINARY %s', 'icontains': 'LIKE %s', 'regex': 'REGEXP BINARY %s', 'iregex': 'REGEXP %s', 'gt': '> %s', 'gte': '>= %s', 'lt': '< %s', 'lte': '<= %s', 'startswith': 'LIKE BINARY %s', 'endswith': 'LIKE BINARY %s', 'istartswith': 'LIKE %s', 'iendswith': 'LIKE %s', }
参考说明,就可以写自己的语句了。
原文:http://www.yihaomen.com/article/python/199.htm
- Django filter中contains 用法
- Django filter中用contains和icontains区别
- Django的models中filter的各种用法
- struts2 中contains用法
- Django filter中用contains 在mysql中的问题
- 集合中contains的用法
- django学习——objects.filter()用法
- css中filter用法
- ogg中filter用法
- django filter 中使用 or (django中Q)
- Django中与Html相关的filter
- Django中与Html相关的filter
- Django模板中常用过滤器(filter)
- Oracle中CONTAINS函数的用法
- oracle 中对于 CONTAINS 函数的用法
- xpath定位中contains的用法
- panda中contains函数的用法
- django ORM中大于等于,小于等于,contains
- win7屏蔽ctrl+alt+up/down快捷键
- union and struct
- C++ 11右值引用
- Asp.net控件开发学习笔记(五)---Asp.net客户端状态管理
- Cling Core 源码解释
- Django filter中contains 用法
- SQL Server中的sysobjects
- jquery autocomplate 仿谷歌百度 自动匹配下拉 ajax
- 可选择和输入的下拉列表框
- MySQL安装错误: unknown option '--skip-federated'
- linux下常用的几个工具 (cut, uniq, wc, grep, sort, tr, paste)
- 去掉DB_DOMAIN的方法
- 安装NVIDIA驱动后,去掉开机动画中出现的NVIDIA的logo
- gcc的简单使用