7.5查询集QuerySet&7.6管理器Manager

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()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章