Django框架中数据的连锁查询和限制返回数据的方法


Posted in Python onJuly 17, 2015

连锁查询

通常我们需要同时进行过滤和排序查询的操作。 因此,你可以简单地写成这种“链式”的形式:

>>> Publisher.objects.filter(country="U.S.A.").order_by("-name")
[<Publisher: O'Reilly>, <Publisher: Apress>]

你应该没猜错,转换成SQL查询就是 WHERE 和 ORDER BY 的组合:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
WHERE country = 'U.S.A'
ORDER BY name DESC;

限制返回的数据

另一个常用的需求就是取出固定数目的记录。 想象一下你有成千上万的出版商在你的数据库里, 但是你只想显示第一个。 你可以使用标准的Python列表裁剪语句:

>>> Publisher.objects.order_by('name')[0]
<Publisher: Apress>

这相当于:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
ORDER BY name
LIMIT 1;

类似的,你可以用Python的range-slicing语法来取出数据的特定子集:

>>> Publisher.objects.order_by('name')[0:2]

这个例子返回两个对象,等同于以下的SQL语句:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
ORDER BY name
OFFSET 0 LIMIT 2;

注意,不支持Python的负索引(negative slicing):

>>> Publisher.objects.order_by('name')[-1]
Traceback (most recent call last):
 ...
AssertionError: Negative indexing is not supported.

虽然不支持负索引,但是我们可以使用其他的方法。 比如,稍微修改 order_by() 语句来实现:

>>> Publisher.objects.order_by('-name')[0]

Python 相关文章推荐
Python修改Excel数据的实例代码
Nov 01 Python
Python中使用PIPE操作Linux管道
Feb 04 Python
python自动化生成IOS的图标
Nov 13 Python
Python函数装饰器原理与用法详解
Aug 16 Python
使用Python完成15位18位身份证的互转功能
Nov 06 Python
python爬虫爬取笔趣网小说网站过程图解
Nov 18 Python
tensorflow之自定义神经网络层实例
Feb 07 Python
Python统计文本词汇出现次数的实例代码
Feb 27 Python
实例讲解Python 迭代器与生成器
Jul 08 Python
利用django创建一个简易的博客网站的示例
Sep 29 Python
如何判断pytorch是否支持GPU加速
Jun 01 Python
图文详解matlab原始处理图像几何变换
Jul 09 Python
Django中对数据查询结果进行排序的方法
Jul 17 #Python
在Python的Django框架中获取单个对象数据的简单方法
Jul 17 #Python
Python的Django框架中的数据过滤功能
Jul 17 #Python
在Python的Django框架中更新数据库数据的方法
Jul 17 #Python
在Django框架中运行Python应用全攻略
Jul 17 #Python
Python的Django框架中的数据库配置指南
Jul 17 #Python
浅谈python中截取字符函数strip,lstrip,rstrip
Jul 17 #Python
You might like
怎样在UNIX系统下安装php3
2006/10/09 PHP
PHP中“简单工厂模式”实例代码讲解
2012/09/04 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
php ImageMagick windows下安装教程
2015/01/26 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
2016/11/09 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
关于JavaScript的变量的数据类型的判断方法
2015/08/14 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
微信小程序侧边栏滑动特效(左右滑动)
2017/01/23 Javascript
使用webpack3.0配置webpack-dev-server教程
2018/05/29 Javascript
解决微信小程序中转换时间格式IOS不兼容的问题
2019/02/15 Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
2019/11/20 Javascript
[00:37]2016完美“圣”典风云人物:rOtk宣传片
2016/12/09 DOTA
[55:56]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
Python采用Django制作简易的知乎日报API
2016/08/03 Python
python+requests+unittest API接口测试实例(详解)
2017/06/10 Python
python机器学习理论与实战(四)逻辑回归
2018/01/19 Python
python查看列的唯一值方法
2018/07/17 Python
Python实现针对json中某个关键字段进行排序操作示例
2018/12/25 Python
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
2019/07/03 Python
Python的log日志功能及设置方法
2019/07/11 Python
Django模板Templates使用方法详解
2019/07/19 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
我的珠宝盒:Ma boîte à bijoux
2019/08/27 全球购物
高职教师岗位职责
2013/12/24 职场文书
预备党员政审材料
2014/02/04 职场文书
2014年五一活动策划方案
2014/03/15 职场文书
小学教师读书活动总结
2014/07/08 职场文书
舌尖上的中国观后感
2015/06/02 职场文书
2015年安全生产月工作总结
2015/07/27 职场文书
《活见鬼》教学反思
2016/02/24 职场文书
酒店工程部的岗位职责汇总大全
2019/10/23 职场文书
未发现nvidia显卡怎么办?Win11系统中未检测到nvidia显卡解决教程
2022/04/08 数码科技