7.5.1概念
查询集,也称查询结构集、QuerySet,表示从数据库中获取的对象集合
7.5.2获取查询集
all():返回所有数据
filter():返回满足条件的数据
exclude():返回满足条件之外的数据
order_by():对结果进行排序
对查询集可以再次调用过滤器进行过滤
如:
BookInfo.objects.filter(bread__get=30).order_by('bpub_date')
7.5.3两大特性
(1)惰性执行
创建查询集不会访问数据库,直到调用数据时,返回访问数据库,调用数据的情况包括迭代、序列化、与if合用
不会访问数据库: qs = BookInfo.objects.all()
访问数据库:
for book in qs:
print(book.btitle)
(2)缓存
使用同一个查询集,第一次使用时会发生数据库的查询,然后django会把结果缓存下来,再次使用这个查询集时会使用缓存的数据,减少了数据库的查询次数
7.5.4限制查询集
等同于数据库中的limit语句
如:
qs = BookInfo.objects.all()[0:2]
注意:不支持负数索引
7.6管理器Manager
7.6.1概念
管理器是Django的模型进行数据库操作的接口,Django应用的每个模型类都拥有至少一个管理器。
7.6.3管理器对象objects
是模型管理器类Manager自动实例化出来的对象
用于调用模型提供的各种工具方法
7.6.3自定义管理器
(1)注意:一旦为模型类指明自定义的过滤器后,django不再生成默认管理对象objects
(2)自定义管理器需求
当管理器提供的功能无法满足当前需求时,可以自定义管理器,扩充功能
(3)自定义方式
class BookInfoManager(models.Manager):
pass
books = BookInfoManager()