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

news/2024/10/26 7:17:23/

管理器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 = titlebook.bpub_date = pub_datebook.bread=0book.bcommet=0book.is_delete = False# 将数据插入进数据表book.save()return book

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

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

      • c)调用语法如下

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


http://www.ppmy.cn/news/1542044.html

相关文章

高并发场景下解决并发数据不一致

简单的场景: 全量数据更新的情况下, 不在乎同一秒的请求都必须要成功, 只留下最新的更新请求数据 方案常用的是 1、数据库增加时间戳标识实现的乐观锁, 请求参数从源头带上微秒或者毫秒时间戳数据库存储, 然后在更新SQL语句上比较 (数据库的时间 < 参数传递的时间) 例如: A…

机器学习与神经网络的当下与未来

一、机器学习与神经网络的发展前景 &#xff08;一&#xff09;各领域的具体应用和作用 生产制造领域 在工业生产中&#xff0c;机器学习和神经网络被用于质量控制。例如&#xff0c;通过对产品外观图像的分析&#xff0c;神经网络能够以极高的准确率识别出产品表面的瑕疵。像…

C++头文件大全及解释(补丁)

一、<iostream> 这个头文件提供了输入输出流的功能。它包含了用于输入&#xff08;如cin&#xff09;和输出&#xff08;如cout&#xff09;的对象和操作符。使用这个头文件&#xff0c;可以方便地进行控制台输入输出操作。 例如&#xff1a; #include <iostream>…

深度解析机器学习的四大核心功能:分类、回归、聚类与降维

深度解析机器学习的四大核心功能&#xff1a;分类、回归、聚类与降维 前言分类&#xff08;Classification&#xff09;&#xff1a;预测离散标签的艺术关键算法与代码示例逻辑回归支持向量机&#xff08;SVM&#xff09; 回归&#xff08;Regression&#xff09;&#xff1a;预…

html+css+js实现Notification 通知

实现效果&#xff1a; 代码实现&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Notif…

语音语言模型最新综述! 关于GPT-4o背后技术的尝试

近期,大型语言模型(LLMs)在生成文本和执行各种自然语言处理任务方面展现出了卓越的能力,成为了强大的AI驱动语言理解和生成的基础模型。然而&#xff0c;仅依赖于基于文本模态的模型存在显著局限性。这促使了基于语音的生成模型的发展,使其能够更自然、直观地与人类互动。 为了…

Hallo 2:通过单张图像与音频生成1小时4K分辨率人像视频的人工智能技术解析

Hallo 2&#xff1a;通过单张图像与音频生成1小时4K分辨率人像视频的人工智能技术解析 近年来&#xff0c;随着人工智能技术的飞速发展&#xff0c;视频生成领域也在不断突破。特别是在虚拟主播、影视制作等行业中&#xff0c;如何高效地生成高质量人像视频已成为当下的热门话…

电商平台店铺运营:巧用 API 接口的策略之道

一、商品管理策略 实时库存同步 通过 API 接口&#xff0c;将店铺的库存管理系统与电商平台连接起来&#xff0c;实现实时库存同步。这样可以避免超卖现象的发生&#xff0c;提高顾客满意度。当库存发生变化时&#xff0c;系统自动更新平台上的库存数量&#xff0c;确保信息的准…