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使用urllib2获取网络资源实例讲解
Dec 02 Python
跟老齐学Python之字典,你还记得吗?
Sep 20 Python
简单谈谈Python中的几种常见的数据类型
Feb 10 Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
Dec 08 Python
python实现验证码识别功能
Jun 07 Python
详解Django-auth-ldap 配置方法
Dec 10 Python
搞定这套Python爬虫面试题(面试会so easy)
Apr 03 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
Jul 15 Python
Python generator生成器和yield表达式详解
Aug 08 Python
计算Python Numpy向量之间的欧氏距离实例
May 22 Python
学点简单的Django之第一个Django程序的实现
Feb 24 Python
python实现简单的名片管理系统
Apr 26 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
发一个php简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
smarty模板局部缓存方法使用示例
2014/06/17 PHP
windows7下安装php的imagick和imagemagick扩展教程
2014/07/04 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
IE php关于强制下载文件的代码
2008/08/23 Javascript
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
2010/05/04 Javascript
前端开发过程中浏览器版本的两种判定方法
2013/10/30 Javascript
深入剖析JavaScript中的枚举功能
2014/03/06 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
详解Bootstrap的iCheck插件checkbox和radio
2016/08/24 Javascript
JS访问DOM节点方法详解
2016/11/29 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
2017/03/01 Javascript
bootstrap可编辑下拉框jquery.editable-select
2017/10/12 jQuery
angularjs select 赋值 ng-options配置方法
2018/02/28 Javascript
JS实现li标签的删除
2019/04/12 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
2019/04/16 jQuery
vue路由拦截器和请求拦截器知识点总结
2019/11/08 Javascript
Python发送http请求解析返回json的实例
2018/03/26 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
Python修改列表值问题解决方案
2020/03/06 Python
python实现飞船大战
2020/04/24 Python
英国泽西岛植物:Jersey Plants Direct
2019/08/07 全球购物
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
一套C#面试题
2013/10/09 面试题
重写子类方法时,抛出异常的书写注意事项
2015/10/17 面试题
会计大学生职业生涯规划书范文
2014/01/13 职场文书
排查整治工作方案
2014/06/09 职场文书
党员群众路线个人整改措施思想汇报
2014/10/12 职场文书
2014年个人思想工作总结
2014/11/27 职场文书
高中生综合素质评价范文
2015/08/18 职场文书
创业计划之特色精品店
2019/08/12 职场文书
关于感恩的歌曲整理(8首)
2019/08/14 职场文书
建国70周年的心得体会(2篇)
2019/09/20 职场文书
python使用shell脚本创建kafka连接器
2022/04/29 Python
如何基于python实现单目三维重建详解
2022/06/25 Python