Django ---- 管理器

本文深入探讨了Django中的管理器对象,解释了objects的作用及其如何帮助实现数据查询。介绍了自定义管理器的方法,包括如何改变查询结果集及添加额外的操作方法。

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

模型管理器类与模型类的关系
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值