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