Python的Django框架中的数据过滤功能


Posted in Python onJuly 17, 2015

我们很少会一次性从数据库中取出所有的数据;通常都只针对一部分数据进行操作。 在Django API中,我们可以使用`` filter()`` 方法对数据进行过滤:

>>> Publisher.objects.filter(name='Apress')
[<Publisher: Apress>]

filter() 根据关键字参数来转换成 WHERE SQL语句。 前面这个例子 相当于这样:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
WHERE name = 'Apress';

你可以传递多个参数到 filter() 来缩小选取范围:

>>> Publisher.objects.filter(country="U.S.A.", state_province="CA")
[<Publisher: Apress>]

多个参数会被转换成 AND SQL从句, 因此上面的代码可以转化成这样:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
WHERE country = 'U.S.A.'
AND state_province = 'CA';

注意,SQL缺省的 = 操作符是精确匹配的, 其他类型的查找也可以使用:

>>> Publisher.objects.filter(name__contains="press")
[<Publisher: Apress>]

在 name 和 contains 之间有双下划线。和Python一样,Django也使用双下划线来表明会进行一些魔术般的操作。这里,contains部分会被Django翻译成LIKE语句:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
WHERE name LIKE '%press%';

其他的一些查找类型有:icontains(大小写无关的LIKE),startswith和endswith, 还有range(SQLBETWEEN查询)。

Python 相关文章推荐
python每次处理固定个数的字符的方法总结
Jan 29 Python
用实例分析Python中method的参数传递过程
Apr 02 Python
Python如何import文件夹下的文件(实现方法)
Jan 24 Python
python实现二分查找算法
Sep 21 Python
python使用pyqt写带界面工具的示例代码
Oct 23 Python
Python探索之自定义实现线程池
Oct 27 Python
利用Python将每日一句定时推送至微信的实现方法
Aug 13 Python
django解决订单并发问题【推荐】
Jul 31 Python
Python TCP通信客户端服务端代码实例
Nov 21 Python
python批量处理txt文件的实例代码
Jan 13 Python
Pycharm激活码激活两种快速方式(附最新激活码和插件)
Mar 12 Python
pytorch 实现L2和L1正则化regularization的操作
Mar 03 Python
在Python的Django框架中更新数据库数据的方法
Jul 17 #Python
在Django框架中运行Python应用全攻略
Jul 17 #Python
Python的Django框架中的数据库配置指南
Jul 17 #Python
浅谈python中截取字符函数strip,lstrip,rstrip
Jul 17 #Python
在Django的视图中使用数据库查询的方法
Jul 16 #Python
详解Python的Django框架中的模版继承
Jul 16 #Python
Django中模版的子目录与include标签的使用方法
Jul 16 #Python
You might like
php下过滤HTML代码的函数
2007/12/10 PHP
php pcntl_fork和pcntl_fork 的用法
2009/04/13 PHP
PHP中使用数组实现堆栈数据结构的代码
2012/02/05 PHP
Windows下的PHP安装pear教程
2014/10/24 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
PHP利用Socket获取网站的SSL证书与公钥
2017/06/18 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
jquery下操作HTML控件的实现代码
2010/01/12 Javascript
jquery indexOf使用方法
2013/08/19 Javascript
JS OffsetParent属性深入解析
2014/01/13 Javascript
限制上传文件大小和格式的jQuery插件实例
2015/01/24 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
2015/03/21 Javascript
理解JS绑定事件
2016/01/19 Javascript
基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
2016/02/29 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
js弹出窗口返回值的简单实例
2016/05/28 Javascript
对Js OOP编程 创建对象的一些全面理解
2016/07/26 Javascript
bootstrap日历插件datetimepicker使用方法
2016/12/14 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
2017/06/01 jQuery
js canvas实现放大镜查看图片功能
2017/06/08 Javascript
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
js实现简单的贪吃蛇游戏
2020/04/23 Javascript
微信小程序中使用 async/await的方法实例分析
2020/05/06 Javascript
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
2016/07/02 Python
python学习笔记之列表(list)与元组(tuple)详解
2017/11/23 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
python实现在图片上画特定大小角度矩形框
2018/10/24 Python
HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题
2020/05/28 HTML / CSS
Skip Hop官网:好莱坞宝宝挚爱品牌
2018/06/17 全球购物
Yahoo的PHP面试题
2014/05/26 面试题
院药学专业个人求职信
2013/09/21 职场文书
从严治党主题教育活动总结
2015/05/07 职场文书