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 相关文章推荐
Php多进程实现代码
May 07 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
Jul 04 Python
CentOS 7下安装Python3.6 及遇到的问题小结
Nov 08 Python
朴素贝叶斯Python实例及解析
Nov 19 Python
对python修改xml文件的节点值方法详解
Dec 24 Python
python实现淘宝秒杀脚本
Jun 23 Python
简单了解Python3里的一些新特性
Jul 13 Python
Django使用Jinja2模板引擎的示例代码
Aug 09 Python
python实现矩阵和array数组之间的转换
Nov 29 Python
Python迭代器模块itertools使用原理解析
Dec 11 Python
Python应用实现双指数函数及拟合代码实例
Jun 19 Python
Python库安装速度过慢解决方案
Jul 14 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
生成sessionid和随机密码的例子
2006/10/09 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
php截取指定2个字符之间字符串的方法
2015/04/15 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
2016/05/18 PHP
Avengerls vs KG BO3 第二场2.18
2021/03/10 DOTA
一些技巧性实用js代码小结
2009/10/14 Javascript
JavaScript高级程序设计 事件学习笔记
2011/09/10 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
JavaScript框架是什么?怎样才能叫做框架?
2015/07/01 Javascript
JS实现的表格行鼠标点击高亮效果代码
2015/11/27 Javascript
JavaScript的Number对象的toString()方法
2015/12/18 Javascript
基于javascript数组实现图片轮播
2016/05/02 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
2016/08/31 Javascript
微信小程序 详解Page中data数据操作和函数调用
2017/01/12 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
Vue 组件(component)教程之实现精美的日历方法示例
2018/01/08 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
[51:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第二局
2016/03/03 DOTA
深度剖析使用python抓取网页正文的源码
2014/06/11 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
Python3从零开始搭建一个语音对话机器人的实现
2019/08/23 Python
python爬虫利用代理池更换IP的方法步骤
2021/02/21 Python
纯HTML5+CSS3制作生日蛋糕代码
2016/11/16 HTML / CSS
Mistine官方海外旗舰店:泰国国民彩妆品牌
2016/12/28 全球购物
FragranceNet中文网:北美健康美容线上零售商
2020/08/26 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
英语道歉信范文
2014/01/09 职场文书
幼儿园小班评语
2014/04/18 职场文书
会计毕业生自荐书
2014/06/12 职场文书
群众路线教育实践活动心得体会(教师)
2014/10/31 职场文书
当幸福来敲门观后感
2015/06/01 职场文书
鸦片战争观后感
2015/06/09 职场文书
欠条样本
2015/07/03 职场文书
volatile保证可见性及重排序方法
2022/08/05 Java/Android