Django ---- 管理器
程序员文章站
2022-04-25 15:46:46
...
Django ---- 管理器
BookInfo.objects.all() 中 objects 是什么呢?
答:objects 是 Django 帮我自动生成的管理器对象,通过管理器可以实现对数据的查询。
objects 是 models.Manager 类的一个对象。自定义管理器之后 Django 不再帮我们生成默认的 objects 管理器。
自定义一个管理器:
1)自定义一个管理器类,这个类继承 models.Manager 类。
2)再在具体的模型类里定义一个自定义管理器的对象。
自定义一个管理器类的应用场景:
1)改变查询的结果集。
比如调用BookInfo.books.all() 返回的是没有删除的图书的数据。
2)添加额外的方法
管理器类中定义一个方法帮我们操作模型类对应的数据表。
使用 self.model() 就可以创建一个跟自定义管理器对应的模型类对象。
class BookInfoManager(models.Manager):
'''自定义模型管理器类'''
# 1.改变查询的结果集
def all(self):
'''重写父类中的all()方法,改变输出的结果集'''
# 1.调用父类的all,获取所有的数据
books = super().all() # 返回的是QuerySet
# 2.数据进行过滤
books = books.filter(isDelete=False)
# 3.返回books
return books
# 2.封装函数:操作模型类对应的数据表(增、删、改、查)
def create_book(self, btitle, bpub_date):
'''添加一个方法,添加一条数据'''
# 1.创建一个图书对象
# 获取self所在的模型类
model_class = self.model
books = model_class()
books.btitle = btitle
books.bpub_date = bpub_date
# 2.保存进数据库
books.save()
# 3.返回books
return books
模型管理器类与模型类的关系