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的PEAK来适配协议的教程
Apr 14 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
May 05 Python
Python3 处理JSON的实例详解
Oct 29 Python
pandas中Timestamp类用法详解
Dec 11 Python
python特性语法之遍历、公共方法、引用
Aug 08 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
Jan 22 Python
在Pandas中处理NaN值的方法
Jun 25 Python
python config文件的读写操作示例
Sep 27 Python
Django数据结果集序列化并展示实现过程
Apr 22 Python
详解Python中namedtuple的使用
Apr 27 Python
openCV提取图像中的矩形区域
Jul 21 Python
python操作toml文件的示例代码
Nov 27 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
dedecms中常见问题修改方法总结
2007/03/21 PHP
php 图片加水印与上传图片加水印php类
2010/05/12 PHP
浅谈php函数serialize()与unserialize()的使用方法
2014/08/19 PHP
用javascript实现给出的盒子的序列是否可连为一矩型
2007/08/30 Javascript
javascript 一个函数对同一元素的多个事件响应
2009/07/25 Javascript
使用jQuery设置disabled属性与移除disabled属性
2014/08/21 Javascript
JS+CSS实现仿新浪微博搜索框的方法
2015/02/24 Javascript
JavaScript中的getDay()方法使用详解
2015/06/09 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
jQuery form插件的使用之处理server返回的JSON, XML,HTML数据
2016/01/26 Javascript
jQuery事件用法详解
2016/10/06 Javascript
原生JS实现图片网格式渐显、渐隐效果
2017/06/05 Javascript
element-ui 关于获取select 的label值方法
2018/08/24 Javascript
js隐式转换的知识实例讲解
2018/09/28 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
2020/04/22 Javascript
javascript实现移动端红包雨页面
2020/06/23 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
浅谈pytorch和Numpy的区别以及相互转换方法
2018/07/26 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
Python数据预处理之数据规范化(归一化)示例
2019/01/08 Python
Python button选取本地图片并显示的实例
2019/06/13 Python
tensorflow模型保存、加载之变量重命名实例
2020/01/21 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
2020/03/03 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
Django Auth用户认证组件实现代码
2020/10/13 Python
HTML5 canvas 基本语法
2009/08/26 HTML / CSS
Carolina Lemke Berlin澳大利亚官网:时尚太阳镜品牌
2019/09/17 全球购物
大学生个人总结的自我评价
2013/10/05 职场文书
工程项目经理岗位职责
2013/12/15 职场文书
社区志愿者心得体会
2014/01/03 职场文书
犯错检讨书
2014/02/21 职场文书
2015元旦标语横幅
2014/12/09 职场文书
邀请书格式范文
2015/02/02 职场文书
2016年党建工作简报
2015/11/26 职场文书
javascript canvas实现雨滴效果
2021/06/09 Javascript