django.db.models.query.QuerySet

QuerySet特点:

1、可迭代

2、可切片

查询相关API

1、get(**kwargs):返回与所给的筛选条件相匹配的对象,返回结果有且只有一个。如果符合筛选条件的对象超过一个,就会抛出MultipleObjectsReturned异常,如果没有找到符合筛选条件的对象,就会抛出DoesNotExist异常。

2、all():查询所有结果的对象集。

3、filter(**kwargs):它包含了与所给的筛选条件相匹配的对象集。

4、exclude(**kwargs):它包含哪些与所给筛选条件不匹配的对象集。

5、order_by(*fields):对查询结果排序

6、reverse():对查询结果反向排序

7、distinct():对返回结果剔除重复记录

8、values(*fields):返回一个ValuesQuerySet,一个特殊的QuerySet,运行后得到的并不是一系列的model的实例化对象,而是一个可迭代的字典序列。

9、values_list(*fields):它与values()非常相似,只不过后者返回的结果是字典序列,而values_list()返回的是元祖序列。

10、count():返回数据库中匹配查询QuerySet的对象数量

11、first():返回第一条记录,等价于[:1][0]

12、last():返回最后一条记录,等价于[::-1][0]

13、exists():如果QuerySet包含有数量,就返回True否则就返回False。

...

更多详见:https://docs.djangoproject.com/en/1.10/ref/models/querysets/

实例:

初始化数据:

INSERT INTO `hello_author` VALUES ('', '叶良辰');
INSERT INTO `hello_author` VALUES ('', '潘晓明');
INSERT INTO `hello_author` VALUES ('', '陈吉');
INSERT INTO `hello_author` VALUES ('', '张晓菲');
INSERT INTO `hello_author` VALUES ('', '兰洋');
INSERT INTO `hello_author` VALUES ('', '温银福');
INSERT INTO `hello_author` VALUES ('', '何月顺');
INSERT INTO `hello_author` VALUES ('', '黄文高'); INSERT INTO `hello_authordetail` VALUES ('', '', '333@qq.com', '北京XX', '1988-01-02', '');
INSERT INTO `hello_authordetail` VALUES ('', '', '333@qq.com', '广州XX', '1987-01-02', '');
INSERT INTO `hello_authordetail` VALUES ('', '', '333@qq.com', '上海XX', '1986-01-02', '');
INSERT INTO `hello_authordetail` VALUES ('', '', '333@qq.com', '广州XX', '1985-01-02', '');
INSERT INTO `hello_authordetail` VALUES ('', '', '333@qq.com', '杭州XX', '1984-01-02', '');
INSERT INTO `hello_authordetail` VALUES ('', '', '333@qq.com', '广西XX', '1983-01-02', ''); INSERT INTO `hello_publisher` VALUES ('', '电子工业出版社', '北京朝阳区', '北京', '北京', '中国', 'http://www.phei.com.cn');
INSERT INTO `hello_publisher` VALUES ('', '机械工业出版社', '广州天河区', '广州', '广东', '中国', 'http://www.hzbook.com');
INSERT INTO `hello_publisher` VALUES ('', '人民邮电出版社', '广州番禺区', '广州', '广东', '中国', 'http://ptpress.com.cn'); INSERT INTO `hello_book` VALUES ('', '锋利的jQuery', '2017-03-01', '10.00', '');
INSERT INTO `hello_book` VALUES ('', '移动App测试实战', '2016-08-01', '25.00', '');
INSERT INTO `hello_book` VALUES ('', '持续集成实践', '2015-10-14', '50.00', '');
INSERT INTO `hello_book` VALUES ('', '深入性能测试', '2017-03-02', '100.00', ''); INSERT INTO `hello_book_authors` VALUES ('', '', '');
INSERT INTO `hello_book_authors` VALUES ('', '', '');
INSERT INTO `hello_book_authors` VALUES ('', '', '');
INSERT INTO `hello_book_authors` VALUES ('', '', '');
INSERT INTO `hello_book_authors` VALUES ('', '', '');
INSERT INTO `hello_book_authors` VALUES ('', '', '');
INSERT INTO `hello_book_authors` VALUES ('', '', '');
INSERT INTO `hello_book_authors` VALUES ('', '', '');
INSERT INTO `hello_book_authors` VALUES ('', '', '');

初始化SQL

1、查询id为1的书籍信息,并只显示书籍名称和出版日期;

>>> Book.objects.filter(id=1).values('title','publication_date')

>>> Book.objects.filter(id=1).values_list('title','publication_date')

2、查询所有出版社信息,并按id降序排列,并尝试使用reverse方法进行反向排序;

>>> Publisher.objects.order_by('-id')

>>> Publisher.objects.order_by('id').reverse()

3、查询出版社所在的城市信息,城市信息不要重复;

>>> Publisher.objects.all().values('city').distinct()

4、查询城市是北京的出版社,尝试使用exclude方法

>>> Publisher.objects.filter(city='北京')

5、查询男作者的数量

>>> AuthorDetail.objects.filter(sex=0).count()

***微信扫一扫,关注“python测试开发圈”,了解更多测试教程!***

Django进阶Model篇005 - QuerySet常用的API的更多相关文章

  1. Django进阶Model篇004 - ORM常用操作

    一.增加 create和save方法 实例: 1.增加一条作者记录 >>> from hello.models import * >>> Author.object ...

  2. Django进阶Model篇—数据库操作(ORM)

    一.数据库配置 django 默认支持sqlite.mysql.oracle.postgresql数据库,像db2和sqlserver之类的数据库需要第三方的支持,具体详见https://docs.d ...

  3. Django进阶Model篇007 - 聚集查询和分组查询

    接着前面的例子,举例聚集查询和分组查询例子如下: 1.查询人民邮电出版社出了多少本书 >>> Book.objects.filter(publisher__name='人民邮电出版社 ...

  4. Django进阶Model篇002 - 模型类的定义

    一.创建数据模型. 实例: 作者模型:一个作者有姓名. 作者详情模型:把作者的详情放到详情表,包含性别.email 地址和出生日期,作者详情模型与作者模型之间是一对一的关系(OneToOneField ...

  5. Django进阶Model篇008 - 使用原生sql

    注意:使用原生sql的方式主要目的是解决一些很复杂的sql不能用ORM的方式写出的问题. 一.extra:结果集修改器-一种提供额外查询参数的机制 二.执行原始sql并返回模型实例 三.直接执行自定义 ...

  6. Django进阶Model篇001 - mysql 数据库的配置

    django 默认支持sqlite.mysql.oracle.postgresql数据库,像db2和sqlserver之类的数据库需要第三方的支持,具体详见: https://docs.djangop ...

  7. Django进阶Model篇006 - 多表关联查询

    接着前面的例子,举例多表查询实例如下: 1.查询作战的所有完整信息. >>> AuthorDetail.objects.values('sex','email','address', ...

  8. Django进阶Model篇003 - 数据库同步技巧

    一.认识一个目录 目录名:migrations 作用:用来存放通过makemigrations命令生成的数据库脚本,不熟悉的情况下,里面生成的脚本不要轻易修改.app目录下必须要有migrations ...

  9. 第二篇、JavaScript常用的API

    下面是我整理的一些JavaScript常用的API清单. 目录 元素查找 class操作 节点操作 属性操作 内容操作 css操作 位置大小 事件 DOM加载完毕 绑定上下文 去除空格 Ajax JS ...

随机推荐

  1. SQL中的函数 •Aggregate 函数 •Scalar 函数

    合计函数  :Aggregate是针对一系列值的操作,返回一个单一的值 Scalar 函数是针对一个单一的值的操作,返回基于输入值的一个单一值 合计函数: AVG()返回某列的平均值:COUNT()返 ...

  2. Mysql数据库(表)的导出和导入小结

    Why? 有人因为想看导出的开房记录库文件,然后学会了Mysql数据库文件的导入操作~: 有人因为工作原因,要用到数据库的备份与导入,然后应需学会了骚操作~: 我因为~~emmm 想看某个导出的库文件 ...

  3. Linux(2)- linux目录结构、shell基本命令

    一.Linux之文档与目录结构 1.Linux文件系统结构 Linux目录结构的组织形式和Windows有很大的不同.Linux没有“盘(如C盘.D盘.E盘)”的概念,而是建立一个根"/&q ...

  4. [TensorFlow] tf.nn.softmax_cross_entropy_with_logits的用法

    在计算loss的时候,最常见的一句话就是tf.nn.softmax_cross_entropy_with_logits,那么它到底是怎么做的呢? 首先明确一点,loss是代价值,也就是我们要最小化的值 ...

  5. Java集合(5):HashSet

    存入Set的每个元素必须是惟一的,因为Set不保存重复元素.加入Set的元素必须定义equals()方法以确保对象的唯一性.Set不保证维护元素的次序.Set与Collection有完全一样的接口. ...

  6. Visual Studio 正则表达式替换

    查找空行:^(?([^\r\n])\s)*\r?$\r?\n 查找多余的空行:^(?([^\r\n])\s)*\r?$\r?\n^(?([^\r\n])\s)*\r?$\r?\n

  7. 自动化测试调查问卷送《QTP自动化测试最佳实践》

    自动化测试调查问卷送<QTP自动化测试最佳实践> http://automationqa.com/forum.php?mod=viewthread&tid=2308&fro ...

  8. react className 样式控制

    1.<div className={ "formbox " + this.state.classArr }></div> 2. this.state.cla ...

  9. VRChat简易教程4-使用VRC的接口实现物体的移动(VRC的action和trigger接口)

    这个教程我们学习如何实现载具的驾驶 一.准备工作 1 最简单的载具驾驶需要至少两个元素,一是需要一个载具,二是需要一个前进的按钮(这里我们只做前进功能),为了直观的能感受到载具的移动,我们还得创造一个 ...

  10. Ubuntu gcc错误:对'log'等函数未定义的引用

    Ubuntu gcc错误:对'log'等函数未定义的引用 a.c #include <stdio.h>#include <math.h>int main(){    float ...