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 相关文章推荐
PHP webshell检查工具 python实现代码
Sep 15 Python
为Python的web框架编写MVC配置来使其运行的教程
Apr 30 Python
Python设计模式之观察者模式简单示例
Jan 10 Python
python爬虫基本知识
Mar 05 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
Nov 18 Python
Python 保持登录状态进行接口测试的方法示例
Aug 06 Python
Python OpenCV读取显示视频的方法示例
Feb 20 Python
python实现斗地主分牌洗牌
Jun 22 Python
python 删除excel表格重复行,数据预处理操作
Jul 06 Python
Cpython解释器中的GIL全局解释器锁
Nov 09 Python
Matplotlib animation模块实现动态图
Feb 25 Python
Python使用pandas导入csv文件内容的示例代码
Dec 24 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
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
PHP封装的完整分页类示例
2018/08/21 PHP
centos7上编译安装php7以php-fpm方式连接apache
2018/11/08 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
Riot.js 快速的JavaScript单元测试框架
2009/11/09 Javascript
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
JavaScript中解析JSON数据的三种方法
2015/07/03 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
2015/08/27 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
jquery select2的使用心得(推荐)
2016/12/04 Javascript
详解从买域名到使用pm2部署node.js项目全过程
2018/03/07 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
Python中的Numeric包和Numarray包使用教程
2015/04/13 Python
python实现RSA加密(解密)算法
2016/02/17 Python
matplotlib绘制动画代码示例
2018/01/02 Python
python简单实现操作Mysql数据库
2018/01/29 Python
python web基础之加载静态文件实例
2018/03/20 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
python 处理string到hex脚本的方法
2018/10/26 Python
python把转列表为集合的方法
2019/06/28 Python
Django 实现admin后台显示图片缩略图的例子
2019/07/28 Python
Python pandas用法最全整理
2019/08/04 Python
python+opencv实现车牌定位功能(实例代码)
2019/12/24 Python
python实现简单颜色识别程序
2020/02/19 Python
sklearn+python:线性回归案例
2020/02/24 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
Sunglasses Shop瑞典:欧洲领先的太阳镜网上商店
2018/04/22 全球购物
Stio官网:男女、儿童户外服装
2019/12/13 全球购物
英语专业学子个人的自我评价
2013/10/02 职场文书
应聘护理专业毕业自荐书范文
2014/02/12 职场文书
小学学习雷锋活动总结
2014/07/03 职场文书
高职教师先进事迹材料
2014/08/24 职场文书
零基础学java之循环语句的使用
2022/04/10 Java/Android