BookInfo.objects.all()->objects是一个什么东西呢?
答:objects是models.Manger类的一个对象,是Django帮我自动生成的管理器对象,通过这个管理器可以实现对数据的查询。
自定义管理器之后Django不再帮我们生成默认的objects管理器:
1)自定义一个管理器类,这个类继承models.Manger类。
2)再在具体的模型类里定义一个自定义管理器类的对象。
自定义管理器类的应用场景:
1)改变查询的结果集。
比如调用BookInfo.books.all()返回的是没有删除的图书的数据。
2)添加额外的方法。
管理器类中定义一个方法帮我们操作模型类对应的数据表。
使用self.model()就可以创建一个跟自定义管理器对应的模型类对象。
class BookInfoManager(models.Manager):'''图书模型管理器类'''# 1.改变原有查询的结果集def all(self):# 1.调用父类的all方法,获取所有数据books = super().all() # QuerySet# 2.对books中的数据进行过滤books = books.filter(isDelete=False)# 返回booksreturn books# 2.封装方法,操作模型类对应的数据表(增删改查)def create_book(self, btitle, bpub_date):'''添加一本图书'''# 1.创建一个图书对象# 获取self所在的模型类model_class = self.modelbook = model_class()# book = BookInfo()book.btitle = btitlebook.bpub_date = bpub_date# 2.添加进数据库book.save()# 3.返回bookreturn book