django查询集-17

Posted mxuanli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django查询集-17相关的知识,希望对你有一定的参考价值。

当查询结果是多个的时候,django-ORM会返回一个 查询集(QuerySet) ,表示从数据库中获取对象的 集合

查询集可以使用过滤器进行再次处理。

例如查询阅读量大于20且评论数大于30的书

>>> book = Book.objects.filter(b_read__gt=20)
>>> book.filter(b_comment__gt=30)
<QuerySet [<Book: 天龙八部>]>

因为查询集类似一个集合,所以可以对查询集进行取下标或者切片等操作(索引不支持负数)。

查询阅读数大于20的结果,再取下标为1 的数据。

>>> book = Book.objects.filter(b_read__gt=20)
>>> book[1]
<Book: 雪山飞狐>

查询集两大特性

1. 惰性执行

创建查询集不会访问数据库,直到调用数据时,才会访问数据库,调用数据的情况包括迭代、序列化、与if合用

2. 缓存

使用同一个查询集,第一次使用时会发生数据库的查询,然后Django会把结果缓存下来,再次使用这个查询集时会使用缓存的数据,减少了数据库的查询次数。

以上是关于django查询集-17的主要内容,如果未能解决你的问题,请参考以下文章

过滤 Django 查询集以获取 dict 值

Django - 按 CharField 值长度过滤查询集

将视图中的 Django 查询集传递给模板

Django 慢查询:将 django 过滤语句连接到数据库日志中的慢查询

选择字段中的 Django 空标签 - 没有查询集

如何使用 django 查询集按小时对对象进行分组?