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模拟登陆类
Mar 29 Python
Python编程入门之Hello World的三种实现方式
Nov 13 Python
如何使用python爬取csdn博客访问量
Feb 14 Python
python 实现红包随机生成算法的简单实例
Jan 04 Python
Python优先队列实现方法示例
Sep 21 Python
python虚拟环境的安装配置图文教程
Oct 20 Python
python爬虫之BeautifulSoup 使用select方法详解
Oct 23 Python
Python+OpenCV采集本地摄像头的视频
Apr 25 Python
django 中使用DateTime常用的时间查询方式
Dec 03 Python
python实现指定ip端口扫描方式
Dec 17 Python
python实现简单遗传算法
Sep 18 Python
python 实现有道翻译功能
Feb 26 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
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
PHP+DBM的同学录程序(5)
2006/10/09 PHP
Extjs学习笔记之五 一个小细节renderTo和applyTo的区别
2010/01/07 Javascript
javascript学习(一)构建自己的JS库
2013/01/02 Javascript
Javascript中拼接大量字符串的方法
2015/02/05 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
2015/03/02 Javascript
jquery插件star-rating.js实现星级评分特效
2015/04/15 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
jQuery插件ajaxFileUpload异步上传文件
2016/10/19 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
BootStrap模态框闪退问题实例代码详解
2018/12/10 Javascript
详解Vue 全局变量,局部变量
2019/04/17 Javascript
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
Openlayers实现地图的基本操作
2020/09/28 Javascript
[03:17]DOTA2-DPC中国联赛1月29日Recap集锦
2021/03/11 DOTA
python模块之StringIO使用示例
2015/04/08 Python
在Python的Django框架上部署ORM库的教程
2015/04/20 Python
python队列queue模块详解
2018/04/27 Python
Django添加favicon.ico图标的示例代码
2018/08/07 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
2020/01/14 Python
k-means 聚类算法与Python实现代码
2020/06/01 Python
使用Python提取文本中含有特定字符串的方法示例
2020/12/09 Python
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
英国最大的天然和有机产品在线零售商之一:Big Green Smile
2020/05/06 全球购物
企业厂长岗位职责
2013/12/17 职场文书
人事部经理岗位职责
2014/03/07 职场文书
企业文明单位申报材料
2014/05/16 职场文书
优秀党支部申报材料
2014/12/24 职场文书
初三英语教学反思
2016/02/15 职场文书
Golang 如何实现函数的任意类型传参
2021/04/29 Golang
用python批量解压带密码的压缩包
2021/05/31 Python
mysql中整数数据类型tinyint详解
2021/12/06 MySQL