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字符编码
Nov 12 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
Nov 01 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
Jun 19 Python
python3中numpy函数tile的用法详解
Dec 04 Python
简单介绍django提供的加密算法
Dec 18 Python
Python scrapy增量爬取实例及实现过程解析
Dec 24 Python
Python HTTP下载文件并显示下载进度条功能的实现
Apr 02 Python
使用keras实现孪生网络中的权值共享教程
Jun 11 Python
使用TensorBoard进行超参数优化的实现
Jul 06 Python
在pycharm中文件取消用 pytest模式打开的操作
Sep 01 Python
Python提取视频中图片的示例(按帧、按秒)
Oct 22 Python
详解Python调用系统命令的六种方法
Jan 28 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学习之 认清变量的作用范围
2010/01/26 PHP
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
2010/11/01 PHP
php学习之简单计算器实现代码
2011/06/09 PHP
深入分析PHP引用(&amp;)
2014/09/04 PHP
php根据用户语言跳转相应网页
2015/11/04 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
2016/04/28 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
2019/04/09 PHP
一个符号插入器 中用到的js代码
2007/09/04 Javascript
JSDoc 介绍使用规范JsDoc的使用介绍
2011/02/12 Javascript
Javascript学习指南
2014/12/01 Javascript
轻松创建nodejs服务器(6):作出响应
2014/12/18 NodeJs
js实现鼠标经过时图片滚动停止的方法
2015/02/16 Javascript
JavaScript函数节流概念与用法实例详解
2016/06/20 Javascript
Angular 理解module和injector,即依赖注入
2016/09/07 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
Python中Class类用法实例分析
2015/11/12 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
python如何通过实例方法名字调用方法
2018/03/21 Python
基于python的socket实现单机五子棋到双人对战
2020/03/24 Python
python3操作注册表的方法(Url protocol)
2020/02/05 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
2020/07/07 Python
python实现银行账户系统
2021/02/22 Python
纯css3实现走马灯效果
2014/12/26 HTML / CSS
中国最大的团购网站:聚划算
2016/09/21 全球购物
Hanky Panky官方网站:内衣和睡衣
2019/07/25 全球购物
TCP协议通讯的过程和步骤是什么
2015/10/18 面试题
九一八事变纪念日演讲稿
2014/09/14 职场文书
蓬莱阁导游词
2015/02/04 职场文书
2015年乡镇纪委工作总结
2015/05/26 职场文书
linux下导入、导出mysql数据库命令的实现方法
2021/05/26 MySQL
MongoDB数据库的安装步骤
2021/06/18 MongoDB
Vue3中的Refs和Ref详情
2021/11/11 Vue.js