Django模型继承之多表继承

在Django模型继承中,支持的第二种模型继承方式是层次结构中的每个模型都是一个单独的模型。每个模型都指向分离的数据表,并且可以被独立查询和创建。在继承关系中,子类和父类之间通过一个自动创建的OneToOneField进行连接。示例代码如下:

【代码3-20】

01  from django.db import models
02  
03  class Place(models.Model):
04      name = models.CharField(max_length=50)
05      address = models.CharField(max_length=80)
06  
07  class Hotel(Place):
08      roomA = models.BooleanField(default=False)
09      roomB = models.BooleanField(default=False)
10      roomC = models.BooleanField(default=False)
11      #...
12      pass

【代码分析】

在第03~05行代码中,定义了一个用于表示地点的抽象基类Place。其中,第04行和第05行代码定义了两个属性name和address,分别用于表示名字和地址。

在第07~10行代码中,定义了一个继承自抽象基类Place的、用于表示酒店的子类Hotel。其中,第08~10行代码定义了3个属性roomA、roomB和roomC,分别用于表示3种酒店房间类型。

另外根据继承规则,抽象基类Place的所有属性在子类Hotel中也均是可以使用的。

因此,基于【代码3-20】的模型设计,可以进行如下操作:

  • >>> Place.objects.filter(name="King's Place")
  • >>> Hotel.objects.filter(name="King's Place ")

假如一个Place对象同时也是Hotel对象,就可以通过小写的模型名将Place对象转换为Hotel对象,示例代码如下:

  • >>> p = Place.objects.get(id=10)
  • # If p is a Hotel object, this will give the child class:
  • >>> p.hotel
  • <Hotel:...>

在上述例子中,如果p不是一个Hotel对象,而仅仅是一个Place对象(又或是其他类的父类对象),那么指向p.hotel就会抛出一个Hotel.DoesNotExist类型的异常。

在Hotel模型中自动创建的、连接至Place模型的OneToOneField看起来类似下面的代码:

【代码3-21】

01  place_ptr = models.OneToOneField(
02      Place, on_delete=models.CASCADE,
03      parent_link=True,
04  )

【代码分析】

设计时可以在Hotel中通过声明自己的OneToOneField,并在其中设置“parent_link=True”属性来重写该字段。

本文节选自《Django 5企业级Web应用开发实战(视频教学版)》,获出版社和作者授权发布。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2981337.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

NCF29A1 高端阻抗匹配

一、前言 Class E 高端 L-Front 匹配集成了额外的滤波器&#xff0c;提供了足够的谐波衰减&#xff0c;使 NCF29A1 与天线在比基频更高的频率下具有相当大的增益。向 PA 提供的阻抗和输出电容与表 1 ZPAOUT 所示相同。 二、原理图 图 1 高端 L-Front 匹配原理图 1&#xff…

VNISEdit 制作安装包

1. 环境依赖 1.1. NSIS 下载 下载地址&#xff1a;https://nsis.sourceforge.io/Download 1.2. VNISEdit 下载 下载地址1&#xff1a;https://sourceforge.net/projects/hmne/ 下载 exe 安装。 下载地址2&#xff1a;https://hmne.sourceforge.net/ 可以下载 exe 安装。也…

实体书营销:“三三裂变”,实操细节分享……

实体书营销:“三三裂变”,实操细节分享 一、实验结果 “三三裂变”的实验,结果比较好。就是我们大概有300人报名,但实际行动的只有109人,大概有103人都完成了三个人的目标,也就是说我们通过109人裂变了475人,利润率是1:4.5左右,整个裂变的效率还是可以的,也就是说: …

K-means聚类算法:如何在杂乱无章的数据中找出规律?

什么是K-means聚类算法&#xff1f; 在编程的世界里&#xff0c;K-means聚类算法就像一位无私的指路人&#xff0c;它不需要我们给出明确的指示&#xff0c;只需要我们提供数据&#xff0c;它就能帮助我们找到数据的归属&#xff0c;找到数据的“家”。 K-means聚类算法的名字…

1000. 合并石头的最低成本(H)/ 1312. 让字符串成为回文串的最少插入次数(H)/ 区间DP!!!

1000. 合并石头的最低成本 官方题解&#xff08;含python&#xff09;其他题解 1312. 让字符串成为回文串的最少插入次数 官方题解 class Solution:def minInsertions(self, s: str) -> int:n len(s)# dp[i][j] 表示对于字符串 s 的子串 s[i:j]&#xff08;这里的下标从…

【Python】基础知识(函数与数据容器)

笔者在C语言基础上学习python自用笔记 type() 返回数据类型 name "root" hei 1.8 wei 77 type_hei type(hei) type_wei type(wei) print(type(name)) print(type_hei) print(type_wei)在python中变量是没有类型的&#xff0c;它存储的数据是有类型的。 数据类…

如何删除“上传到移动云盘”右键菜单

问题表现 如题&#xff0c;“上传到移动云盘”的右键菜单非常难删除&#xff0c;按照网上的右键菜单注册表删除通用教程也没找到 解决方法 实际上&#xff0c;该菜单的位置在注册表中的 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shell\就是删除里…

Kafka 可视化管理工具 CMAK 启动错误 -- 命令行太长 问题解决

一、安装环境描述&#xff1a; Kafka版本&#xff1a;kafka_2.13-2.8.1cmak 版本&#xff1a;cmak-3.0.0.6安装环境&#xff1a;windows 11 二、问题描述 当我们在 命令行启动 cmak.bat 命令时&#xff0c;会报如下错误&#xff1a; 命令行太长三、解决办法 修改 cmak.bat…

CUDA线程管理

核函数在主机端启动时&#xff0c;执行会转移到设备上&#xff0c;并且将控制权转移回主机。当核函数在GPU上运行时&#xff0c;主机可以运行其他函数。因此&#xff0c;主机与核函数是异步的。 此时&#xff0c;设备端也就是GPU上会产生大量的线程&#xff0c;并且每个线程都…

世界读书日|看看阿里内部的技术大牛们推荐了什么书?

AI 时代&#xff0c;技术呈指数级发展&#xff0c;我们越来越关注&#xff0c;如何持续学习提升&#xff0c;跟上时代的步伐。 刚好借着世界读书日的契机&#xff0c;我们邀请了阿里内部的技术大牛们&#xff0c;分享他们在 AI 时代持续学习的过程中&#xff0c;推荐的一些内容…

黄金行情下跌有投资机会吗?

尽管黄金价格的波动常常引起投资者的高度关注&#xff0c;但行情的下跌未必只是警讯&#xff0c;亦可能蕴藏着某些难得的投资机会。总之&#xff0c;答案是肯定的——在黄金行情下跌时&#xff0c;依旧有适宜的投资机会&#xff0c;只是这需要投资者具备相应的应对知识和策略。…

Msfvenom生成木马实验

E025-渗透测试常用工具-使用msfvenom生成木马进行渗透测试 第一步&#xff0c;打开网络拓扑&#xff0c;点击启动选项&#xff0c;启动实验虚拟机 第二步&#xff0c;使用ifconfig和ipconfig命令分别获取渗透机和靶机的IP地址&#xff0c;使用ping命令进行网络连通性测试&…

关于Java的三个小题目(很容易错!)

第一题 char运算后的数据类型 最后输出的是什么类型&#xff1f; 答案&#xff1a;int char与byte的联系和区别 char是无符号型的&#xff0c;能够表示一个整数&#xff0c;不能表示负数&#xff08;0~65535&#xff09;&#xff1b;而byte是有符号型的&#xff0c;能够表示…

航空业微服务架构中台的构建与实践

随着航空业的快速发展&#xff0c;航空公司需要面对更加复杂的业务环境和客户需求。在这样的背景下&#xff0c;构建一个稳健、高效的微服务架构中台成为了航空公司的当务之急。本文将探讨航空业微服务架构中台的设计理念、关键技术以及实践经验&#xff0c;帮助航空公司构建具…

Jina Reranker 新模型发布,更小、更快、更便宜!

在传统文本搜索技术已经相对成熟的背景下&#xff0c;如何进一步提高搜索的效率和速度成为了新的追求目标。应对这一挑战&#xff0c;Jina Reranker 模型系列推出了两款针对性能调优的新模型&#xff1a;jina-reranker-v1-turbo-en 和 jina-reranker-v1-tiny-en&#xff0c;它们…

矽塔SA6288Q栅极驱动器,可替代峰绍FD6288Q

SA6288 是一款集成了三个独立半桥栅极驱动器&#xff0c;特别适合于三相电机应用中高速功率MOSFET 和 IGBT 的栅极驱动。可在高达250V 电压下工作。 SA6288内置 VCC 和 VBS 欠压&#xff08; UVLO &#xff09;保护功能&#xff0c;防止功率管在过低的电压下工作&#xff0c;…

赛劲SEJINIGB零背隙滚轮齿条齿圈产品助力高精度运动平台

在高度精密化的工业时代&#xff0c;传统齿轮齿条系统所面临的背隙、摩擦粉尘、润滑等问题愈发凸显&#xff0c;这些问题不仅限制了设备的精度和稳定性&#xff0c;还对生产效率和产品质量造成严重影响。为此&#xff0c;赛劲SEJINIGB经过长期研发和技术积累&#xff0c;推出了…

springboot论文格式系统

采用springbootmysqlhtmlvue技术 详细运行视频地址B站运行效果视频地址 &#xff08;1&#xff09;系统具备用户管理功能&#xff0c;包括用户注册、登录、权限管理等功能。 &#xff08;2&#xff09;系统具备格式规范管理功能&#xff0c;包括格式规范创建、编辑、删除等操…

两天速通阿里

感觉这一周太梦幻了&#xff0c;就像一个梦&#xff0c;很不真实~~~ 感觉这个暑期&#xff0c;我的运气占了99成&#xff0c;实力只有百分之一 4.15上午 腾讯csig 腾讯云部门&#xff0c;面完秒进入复试状态 4.16下午 美团优选供应链部门&#xff0c;4.18上午发二面 4.17晚上 阿…

2款摄像头录像软件,满足你的多种要求!

“有没有一款能够录制摄像头视频的软件呀&#xff1f;我计划录制一些生活小窍门和教学视频&#xff0c;想要能清楚地拍到自己的操作过程。但找了好多软件&#xff0c;都不太满意&#xff0c;真心希望大家能给我推荐几款好用的摄像头录像软件&#xff0c;最好能简单易上手的&…