使用 Django 的 ORM 的模型继承方法

2023-12-10

我想将事件存储在我正在闲逛的 Web 应用程序中,并且我非常不确定每种方法的优缺点 - 广泛使用继承或以更温和的方式使用继承。

Example:

class Event(models.Model):
    moment = models.DateTimeField()

class UserEvent(Event):
    user = models.ForeignKey(User)
    class Meta:
        abstract = True

class UserRegistrationEvent(UserEvent):
    pass # Nothing to add really, the name of the class indicates it's type

class UserCancellationEvent(UserEvent):
    reason = models.CharField()

感觉就像我正在疯狂地创建数据库表。它需要大量的连接来选择内容,并且可能会使查询复杂化。但我觉得它的设计感觉很好。

使用具有更多字段的“更扁平”模型会更合理吗?

class Event(models.Model):
    moment = models.DateTimeField()
    user = models.ForeignKey(User, blank=True, null=True)
    type = models.CharField() # 'Registration', 'Cancellation' ...
    reason = models.CharField(blank=True, null=True)

谢谢大家对此的评论。

Philip


扁平化优于嵌套化。在这种情况下,我不认为“深层继承”真的会给你带来任何好处:我会选择更扁平的模型,因为它是一种更简单、更朴素的设计,可能具有更好的性能特征和易于访问。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Django 的 ORM 的模型继承方法 的相关文章

  • Python:多处理和请求

    以下是我正在运行的使用多处理并行触发 HTTP 请求的代码片段 在控制台上运行后 它挂在 requests get url 处 既不继续前进也不抛出错误 def echo 100 q print before r requests get
  • 刷新访问令牌时出现“invalid_grant”错误的情况?

    最近我一直在为这个问题揪心 一些背景 使用oauth2客户端 https code google com p google api python client 库来管理用户的令牌 这些令牌用于定期并发执行各种后台任务 每次要为用户运行其中一
  • 错误只有 size-1 数组可以转换为 Python 标量

    我有这个代码 for a in data X for i in a if not i isdigit x hash i data X column row x row row 1 row 0 column column 1 desired
  • OpenCV Python 删除图像中的某些对象

    我正在使用带有 opencv 和 numpy 的 python 来检测天文中的星星 例如这个1 https i stack imgur com AKwEJ jpg图片 使用模板匹配 我可以用阈值检测星星 单击 2 2 https i sta
  • 使用 GeoDjango 在坐标系之间进行转换

    我正在尝试将坐标信息添加到我的数据库中 添加django contrib gis支持我的应用程序 我正在写一个south数据迁移 从数据库中获取地址 并向 Google 询问坐标 到目前为止 我认为我最好的选择是使用geopy为了这 接下来
  • 使用 python 通过搜索端点从 Spotify API 获取曲目

    因此 我尝试使用 API 的搜索端点进行搜索 从而从 Spotify API 获取曲目 请参阅文档 https developer spotify com documentation web api reference search sea
  • 如何编写高效的配对算法?

    我需要一种算法的帮助 该算法可以有效地将人们分组 并确保以前的配对不会重复 例如 假设我们有 10 位候选人 candidates 0 1 2 3 4 5 6 7 8 9 并假设我们有一个先前匹配的字典 这样每个键值对即candidate
  • 01 无效令牌[重复]

    这个问题在这里已经有答案了 嘿 学习 python3有一段时间了 遇到字典和dictionary name get 方法并尝试获取随机键值 问题 data data get key 1 它有效并且返回 1 但如果我使用data get ke
  • 使用 K 均值聚类 OpenCV 进行交通标志分割

    I used K Means Clustering to perform segmentation on this traffic sign as shown below 这些是我的代码 读取图像并模糊 img cv imread 000
  • 在 Python 中比较日期 - 如何处理时区修饰符

    我正在做Python日期比较 假设我有一个这样的约会 Fri Aug 17 12 34 00 2012 0000 我按以下方式解析它 dt datetime strptime Fri Aug 17 12 34 00 2012 0000 a
  • Python 中的二进制相移键控

    我目前正在编写一些代码 以使用音频转换通过激光传输消息 文件 和其他数据 我当前的代码使用 python 中 binascii 模块中的 hexlify 函数将数据转换为二进制 然后为 1 发出一个音调 为 0 发出不同的音调 这在理论上是
  • keras 预测内存交换无限期增加

    我使用keras实现了一个分类程序 我有一大组图像 我想使用 for 循环来预测每个图像 然而 每次计算新图像时 交换内存都会增加 我尝试删除预测函数内部的所有变量 并且我确信该函数内部存在问题 但内存仍然增加 for img in ima
  • django 模板和列表字典

    我正在使用 django 的模板系统 但遇到以下问题 我将一个字典对象 example dictionary 传递给模板 example dictionary key1 value11 value12 我想做以下事情 for key in
  • 从文档字符串生成 sphinx 文档不起作用

    我有一个具有以下结构的项目 我想保留 my project build here is where sphinx should dump into requirements txt make bat Makefile more config
  • 散景中的时间序列流

    我想在散景中绘制实时时间序列 我只想在每次更新时绘制新的数据点 我怎样才能做到这一点 散景网站上有一个动画情节的示例 但它每次都需要重新绘制整个图片 另外 我正在寻找一个简单的示例 我可以在其中逐点绘制时间序列的实时绘图 散景效果0 11
  • 写入 UDP 套接字会被阻塞吗?

    如果是的话 在什么条件下 或者 换句话说 在twisted 中运行此代码是否安全 class StatsdClient AbstractStatsdClient def init self host port super StatsdCli
  • 如何在包更新之间保留数据文件?

    我正在使用data files的论证setuptools setup 将配置文件安装到 etc和用户主目录 但是更新包pip install
  • tweepy 流到 sqlite 数据库 - 语法错误[重复]

    这个问题在这里已经有答案了 可能的重复 tweepy 流到 sqlite 数据库 语法无效 https stackoverflow com questions 9434205 tweepy stream to sqlite database
  • Django Azure AD 集成

    我目前正在使用 Azure AD 将 SSO 集成到 Django 项目中 我目前正在使用该包 https github com leibowitz django azure ad auth https github com leibowi
  • 如何指定一个变量作为类或类实例的成员变量?

    在最新的 Python 2 7 x 中 给定类定义内的任何成员变量 该成员变量是否始终处于类级别 因为它是由该类的所有实例共享的单个变量 在类的定义中 如何指定 类定义中的哪些成员变量属于该类 因此由该类的所有实例共享 以及 哪些属于该类的

随机推荐

  • jQuery fullCalendar 和 qTip

    我正在考虑使用 fullCalendar 并使用 qTip 使用 eventMouseover 显示描述 有没有人设法做到这一点或知道解决方案 我已经谷歌搜索并尝试实施这个帖子但我没有任何快乐 我唯一一次让它工作时它陷入了循环并导致我的浏览
  • 可选择注入内容脚本

    内容脚本可以通过在扩展清单文件中声明以编程方式或永久注入 程序注入需要主机权限 通常由浏览器或页面操作授予 在我的用例中 我想注入 gmail outlook com 和 yahoo 邮件网站 而无需用户操作 我可以通过声明所有这些清单来做
  • 在 C++ 中以编程方式设置 Firemonkey 控件字体

    我有一个自定义 Firemonkey 控件 它扩展了TEdit这是在表单上动态创建的 我试图在创建它时设置它的字体大小 Search gt Font gt Size 15 但是 控件上的字体保持不变 我有另一个相同类型的控件 该控件已经在表
  • 在 CF.NET 中创建大位图时出现 OutOfMemoryException

    我的紧凑框架应用程序通过将所有项目渲染到大位图表面 然后将该位图复制到屏幕上的偏移位置 以便仅显示适当的项目来创建平滑滚动列表 旧版本仅渲染当时应该出现在屏幕上的项目 但这种方法对于平滑滚动界面来说太慢了 最初创建大位图时 它偶尔会生成 O
  • PHP - MySQL 从存储过程中获取输出参数的值

    我使用 PHP 从 PHP 调用了 MySQL 存储过程mysqli 它有一个输出参数 rs mysqli gt query CALL addNewUser name age id 这里 id 是输出参数 接下来 我触发以下查询来获取 ou
  • 如何从 UICollectionViewCell 呈现 AlertView

    我正在使用 UICollectionView 和标题中的地图 我想处理核心位置错误 我有 3 种错误类型 对于其中两种 我想提供一个UIAlertView 但我收到错误 因为UICollectionViewCell没有名为的成员presen
  • 使用 java 中的代理代码连接到站点

    我想通过java中的代理连接到as站点 这是我写的代码 public class ConnectThroughProxy Proxy proxy new Proxy Proxy Type HTTP new InetSocketAddress
  • wss 龙卷风连接问题

    龙卷风服务器 ssl options certfile server crt keyfile server key application Application server tornado httpserver HTTPServer a
  • Spring验证返回很长的错误消息,而不仅仅是自定义的消息

    Spring验证返回很长的错误消息而不是自定义的一次 这是 dto 中的代码部分 public class RequestDto implements Serializable NotNull message id required pri
  • IE 11 的模板标签 polyfill - 不适用于表 tr 和 td

    我使用polyfill js 它允许处理不支持它的浏览器的标签 上的polyfill源代码jsfiddle Source question 但我注意到 在 IE 11 中 这个 polyfill 无法与包含以下内容的模板一起使用 tr an
  • 使用 Visual Studio 2010 和 HG 进行版本控制

    最近 我和我的团队获得了一个用于版本控制的 HG 存储库 因为这将使我们的应用程序开发变得更容易 更好 我们使用 Visual Studio 2010 和 c 所有项目都处于版本控制之下 不幸的是 当我们其中一个人提交时 另一个人在打开解决
  • 正则表达式在所有标点符号之间添加空格

    我需要在字符串中的所有标点符号之间添加空格 Hello World gt Hello World It s 9 00 gt It s 9 00 1 B 3 D gt 1 B 3 D 我认为正则表达式是正确的方法 可以匹配所有非标点符号 a
  • Spark 中的倾斜

    我有一个数据集 我想按特定键 clientID 进行分区 但某些客户端产生的数据比其他客户端多得多 Hive 中有一个功能称为 列表分桶 由 调用倾斜于 专门针对这种情况 但是 我找不到任何迹象表明 Spark 支持此功能 或者如何 如果支
  • Android 开发 - 转换为 Dalvik 格式失败,错误 1

    所以我第一次涉足这个领域 我按照说明安装了 android SDK 和 eclipse 插件 我创建了一个空白的新 android 项目 但出现以下构建错误 2011 01 08 16 34 55 xxx Dxno classfiles s
  • Maximo 公式可以返回 null 吗?

    在 Maximo 7 6 1 1 中 我在持久字段上有一个属性公式 称为WORKORDER X 字段类型为十进制 长度为18 小数位为10 该公式的目的是做到这一点 如果 WOSERVICEADDRESS LONGITUDEX 不为空 则使
  • Java中System.out.println的含义是什么?

    这是静态的吗println函数于out班级来自System命名空间 namespace System class out static println 我该如何解释这个名字 这个函数在 JRE 中的什么地方定义的 在java lang Sy
  • 在 groovy 脚本中从 ant - sshexec 获得格式良好的输出

    我的问题是 ant 任务的输出总是在开头有一些 ssh exec 信息文本 我可以抑制 禁用它吗 到目前为止我的代码 def ant new AntBuilder variable definition ant sshexec host h
  • OS X 上的 Matplotlib 问题(“ImportError:无法导入名称 _thread”)

    在过去几天的某个时候 Matplotlib 停止在 OS X 上为我工作 这是我尝试时遇到的错误import matplotlib Traceback most recent call last File my path to script
  • “dotnet Restore”失败,并显示“SSL 对等证书或 SSH 远程密钥不正常”

    我刚刚按照这里的程序进行操作 https www microsoft com net core ubuntu 这就是输出dotnet restore log Restoring packages for home test project
  • 使用 Django 的 ORM 的模型继承方法

    我想将事件存储在我正在闲逛的 Web 应用程序中 并且我非常不确定每种方法的优缺点 广泛使用继承或以更温和的方式使用继承 Example class Event models Model moment models DateTimeFiel