欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

模型管理器类与模型类的关系
Django ---- 管理器

相关标签: WEB 框架