当前位置: 首页 > article >正文

python主流框架Django:ORM框架关联查询与管理器

管理器Manager

  • 管理器的基本概念

    管理器是Django的模型进行数据库操作的接口,Django应用的每个模型类都拥有至少一个管理器。
    我们在通过模型类的objects属性提供的方法操作数据库时,即是在使用一个管理器对象objects。当没有为模型类定义管理器时,Django会为每一个模型类生成一个名为objects的管理器,它是models.Manager类的对象。
  • 自定义管理器

    我们可以自定义管理器,并应用到我们的模型类上。
    -- 注意:一旦为模型类指明自定义的管理器后,Django不再生成默认管理对象objects。
  • 自定义管理器类主要用于两种情况:

    • 情况一: 修改原始查询集,重写all()方法。

      • a)打开books/models.py文件,定义类BookInfoManager

        #图书管理器
          class BookInfoManager(models.Manager):
            
              def all(self):
                # 默认查询未删除的图书信息
                # 调用父类的成员语法为:super().方法名
                return super().filter(is_delete=False)
        • b)在模型类BookInfo中定义管理器

          class BookInfo(models.Model):
              ...
              books = BookInfoManager()

        • c)使用方法

          # 修改模型类以后需要重新进入交互环境
          BookInfo.books.all()

      • 情况二: 在管理器类中补充定义新的方法

      • a)打开booktest/models.py文件,定义方法create。

        class BookInfoManager(models.Manager):
              
            def create_book(self, title, pub_date):
                # self.model可以获得模型类的实例对象
                book = self.model()
                book.btitle = title
                book.bpub_date = pub_date
                book.bread=0
                book.bcommet=0
                book.is_delete = False
                  
                # 将数据插入进数据表
                book.save()
                return book

      • b)为模型类BookInfo定义管理器books语法如下

        
        class BookInfo(models.Model):
            ...
            books = BookInfoManager()

      • c)调用语法如下

        
        from datetime import date
          
        book = BookInfo.books.create_book("大话西游",date(1980,1,1))


http://www.kler.cn/news/365053.html

相关文章:

  • vue3父组件控制子组件表单验证及获取子组件数值方法
  • springboot2.0x 和springboot 1.0 整合redis 使用自定义CacheManager 问题
  • C++ 模版和继承
  • Python中input()输入函数和print()输出函数的用法
  • 盘古信息制造数字化优才计划 | 解决人才困境 赋能智能制造
  • 登录时用户名密码加密传输(包含前后端代码)
  • 关于Linux自带的python2.6.6升级到2.7.5版本步骤详解
  • 在银河麒麟系统中Qt连接达梦数据库
  • Python爬虫:自动化获取商品评论数据
  • 纯血鸿蒙的未来前景
  • 7款视频转换器大测评!哪款是最适合你的视频格式转换器?
  • spring boot yml文件中引用*.properties文件中的属性
  • 雷池社区版那么火,为什么站长都使用雷池社区版??
  • 我们可以用微服务创建状态机吗?
  • 边缘计算路由网关R40钡铼技术3LAN口1WAN口Modbus协议
  • 系统架构设计师教程 第6章 6.4 应用程序域数据库的交互 笔记
  • ASP.NET Core 8.0 中使用 Hangfire 调度 API
  • Python中input()输入函数和print()输出函数的用法
  • 网络连接设备的功能与应用概述
  • tensorflow案例2--猴痘病识别,一道激活函数的bug
  • MySQL 查看有哪些表
  • 台达A2伺服
  • ONLYOFFICE 文档8.2版本已发布:PDF 协作编辑、改进界面、性能优化等更新
  • Spring Data 技术详解与最佳实践
  • 旧电脑安装Win11提示“这台电脑当前不满足windows11系统要求”,安装中断。怎么办?
  • Webserver(2)GCC