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调用机器喇叭发出蜂鸣声(Beep)的方法
Mar 23 Python
简要讲解Python编程中线程的创建与锁的使用
Feb 28 Python
python3使用requests模块爬取页面内容的实战演练
Sep 25 Python
详解Python里使用正则表达式的ASCII模式
Nov 02 Python
tensorflow获取变量维度信息
Mar 10 Python
python实现快速排序的示例(二分法思想)
Mar 12 Python
python 函数内部修改外部变量的方法
Dec 18 Python
Python 获取div标签中的文字实例
Dec 20 Python
在Pycharm terminal中字体大小设置的方法
Jan 16 Python
python实现人工蜂群算法
Sep 18 Python
Python 爬取淘宝商品信息栏目的实现
Feb 06 Python
Python OpenCV快速入门教程
Apr 17 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实现的仿阿里巴巴实现同类产品翻页
2009/12/11 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
javascript之函数直接量(function(){})()
2007/06/29 Javascript
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
对xmlHttp对象方法和属性的理解
2011/01/17 Javascript
js借助ActiveXObject实现创建文件
2013/09/29 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
2015/07/05 Javascript
js实现选中复选框文字变色的方法
2015/08/14 Javascript
详解jQuery中的事件
2016/12/14 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
2017/09/27 Javascript
详解vue-loader在项目中是如何配置的
2018/06/04 Javascript
Javascript实现异步编程的过程
2018/06/18 Javascript
vue中datepicker的使用教程实例代码详解
2019/07/08 Javascript
vue3 源码解读之 time slicing的使用方法
2019/10/31 Javascript
vue点击按钮实现简单页面的切换
2020/09/08 Javascript
[03:56]还原FTP电影首映式 DOTA2群星拼出遗迹世界
2014/03/26 DOTA
python分析网页上所有超链接的方法
2015/05/08 Python
在windows系统中实现python3安装lxml
2016/03/23 Python
python实现装饰器、描述符
2018/02/28 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
python3爬虫中异步协程的用法
2020/07/10 Python
python如何操作mysql
2020/08/17 Python
纯CSS3实现的阴影效果
2014/12/24 HTML / CSS
h5页面唤起app如果没安装就跳转下载(iOS和Android)
2020/06/03 HTML / CSS
泰国汽车、火车和轮渡票预订网站:Bus Online Ticket
2017/09/09 全球购物
C语言开发工程师测试题
2016/12/20 面试题
Android面试题附答案
2014/12/08 面试题
拓展训练激励口号
2014/06/17 职场文书
学校交通安全责任书
2014/08/25 职场文书
九一八事变演讲稿范文
2014/09/14 职场文书
以权谋私检举信范文
2015/03/02 职场文书
公司表扬信格式
2015/05/04 职场文书
2016年社会管理综治宣传月活动总结
2016/03/16 职场文书
Win10鼠标宏怎么设置?win10系统鼠标宏的设置方法
2022/08/14 数码科技