Django,多表继承有那么糟糕吗?

2024-04-11

这并不是 django 特有的。

一罐模型

Place (with location, name, and other common attributes)
 - Restaurant  (menu..)
 - ConcertHall  (hall size..)
  1. 在两个单独的表中,让每个表保存它们需要的所有字段。 (在django世界中,这称为抽象继承)
  2. 在三个表中,其中一个包含公共字段,另外两个有自己的唯一字段。 (django中的多表继承)

本书作者强烈建议不要使用多表继承。

假设您想根据位置查询地点并对结果进行分页(它不必是位置,可以是我们要过滤的任何其他常见属性)

我可以看到如何使用多表继承来实现它。

从地点 LEFT OUTER JOIN“餐厅”中选择 ( restuarant.id=place.id) LEFT OUTER JOIN “音乐厅” on ( Concerthall.id=place.id) 其中...按距离排序

用抽象继承来实现可行吗?


根据Django 文档:模型继承 https://docs.djangoproject.com/en/1.8/topics/db/models/#model-inheritance:

您必须做出的唯一决定是您是否希望父模型本身成为模型(具有自己的数据库表),或者父模型是否只是仅通过子模型可见的公共信息的持有者。

我认为这两种可能性都只是工具,同样是好的工具,这仅取决于您的用例是否合适。当然,这两种方法都需要考虑特定的事情,并且从概念上讲,有时多表继承可能更难以理解,但除此之外,这个主题就会变得固执己见。

如果两个模型都需要一个查询集,那么您考虑多表继承而不是抽象模型是合乎逻辑的,因为否则您将需要将两个查询集合并为一个,最有可能通过使用列表来实现相关答案 https://stackoverflow.com/questions/431628/how-to-combine-2-or-more-querysets-in-a-django-view建议,但你肯定会失去 ORM 功能。

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

Django,多表继承有那么糟糕吗? 的相关文章

随机推荐

  • Android 版 usbmon

    我想分析我的设备的 USB 通信 SGS4 我到处都看到需要配置 usbmon 并将其编译到内核中 Afaik 这个模块没有内置在android linux系统中 我在编译内核方面没有太多经验 但如果有必要 我会这样做 您能说出这样做的步骤
  • 使用 LINQ 简化 foreach 循环(在每次迭代中选择两个对象)

    给定以下接口和两个类 public interface IMyObj int Id get set public class MyObj1 IMyObj public MyObj1 int id Id id public int Id ge
  • 如何将自定义排序应用于数组?

    我想以自定义的方式对数组进行排序 示例是学生的班级水平 sortBy Junior Senior Freshman Sophomore function classlevel 理想情况下 排序应返回 Freshman Sophomore J
  • geom_密度匹配geom_histogram binwitdh

    我想在 ggplot2 中的分布条形图上添加一条线以显示平均分布 但遇到了麻烦 像这样的 ggplot 调用 ggplot x aes date received geom histogram aes y count binwidth 30
  • 组件在react-router-4中匹配空值

    我正在尝试迁移到使用 React Router 4 但在理解其逻辑时遇到了一些困难
  • 是否有在基于 DDD 的分层架构中的模型层和数据访问层之间使用 LINQ 的建议模式

    我一直在读蒂姆 麦卡锡的书关于 NET 中的 DDD 的精彩书籍 http www amazon co uk NET Domain Driven Design Solution Programmer dp 0470147563 但在他的示例
  • 在 C#/.NET 中持久存储设置/变量

    好吧 这是一个全新的问题 所以请原谅我 存储变量以使它们持久且可恢复的最佳方法是什么 我有一个小型应用程序 它使用大约 10 个变量 字符串和小数 作为设置 目前 我将它们全部转换为字符串 如果需要 将它们放入数组中并将数组序列化为文件 如
  • 纯android原生隐藏导航栏

    我看过关于通过java隐藏android应用程序导航栏的文章和文章 然而 我想知道的是如何通过纯 android c 本机活动应用程序删除全屏应用程序 游戏 的导航栏 根本没有 JAVA Android 清单中的全屏可隐藏顶部栏 但导航栏保
  • AV Foundation 相机预览图层被放大,如何缩小?

    我当前使用的应用程序的主要功能是使用 Zxing 库连续扫描 QR 条形码 http code google com p zxing http code google com p zxing 对于连续帧捕获 我用来初始化 AVCapture
  • 什么是用于关闭屏幕键盘的 Mobile Safari 事件?

    我想运行一个 html body animate scrollTop 0 0 每当我的 iPad Web 应用程序中的屏幕键盘关闭时 我尝试过 blur 但如果用户直接通过屏幕键盘关注下一个或上一个字段 则会出现问题 关闭键盘是否会触发任何
  • 如何访问docker的HyperKit创建的VM?

    适用于 Mac 的 Docker https docs docker com docker for mac 使用由以下命令创建的 Linux VMHyperKit https github com docker HyperKit 用于在 M
  • 使用 SQLite 查找查询中行的差异

    我有一个SQLite包含各种产品价格的表 它是一个快照表 因此包含 5 分钟间隔的价格 我想编写一个查询 该查询将返回每件商品从一行到下一行的价格差异 这些列是 id 自动增量 record id 产品的 id 价格 该时间点的价格 时间
  • 如何在“Project Navigator”面板上突出显示 XCode 4 中打开的文件?

    由于一个项目可以在 项目导航器 面板上显示的数十个目录 过滤器 中包含数百个文件 因此有时很难查找当前在编辑器中打开的文件 例如 当我从一个文件跳转到另一个文件时 通过 CMD 单击 等 有没有办法在 项目导航器 面板上自动选择当前打开的文
  • 如何在 angular-cli 构建中包含自定义文件?

    回复 Angular2 2 0 0 Angular cli v1 0 0 beta 11 webpack 8 如何告诉 angular cli 在构建时将 src assets 中的文件包含在 dist 的根目录中 我们部署到 Window
  • 使用 amazon ec2 监控生产服务(tomcat、MSQL 和 apache)

    目前我有一个服务器 Amazon EC2 实例类型 通过AWS控制台 我们可以监控我们的实例 服务器 CPU利用率 磁盘读取等 有什么方法可以监控我的应用程序服务 比如 tomcat mysql apache 等 基本上 每当tomcat
  • 如何在android中检查当前互联网连接是否可用

    我也想离线执行我的应用程序 所以我需要检查当前互联网连接是否可用 谁能告诉我如何检查 android 中的互联网是否可用 给出示例代码 我尝试使用下面的代码并使用模拟器进行检查 但它不起作用 public boolean isInterne
  • 在 R 中的插入符序列函数中使用“ROC”度量的问题

    我有一个包含两个类的不平衡数据集 因此我认为我可以使用 ROC 作为指标 而不是使用 Accuracy 来使用 caret 包调整 R 中的模型 我正在尝试不同的方法 例如 rpart rf 等 我认为我们可以提取概率并使用 ROC 作为决
  • 从 vx_image 设置和获取数据

    我有两个vx image s src and dst 我需要从src vx image并进行一些操作并将其设置为dstvx 图像 vx image src vx image dst 我找不到执行此操作的正确文档 我可以知道该怎么做吗 谢谢
  • 如何在atom feed中显示商品照片?

    我想为 Atom feed 中的每个项目显示一张照片 我在条目中使用了这个结构
  • Django,多表继承有那么糟糕吗?

    这并不是 django 特有的 一罐模型 Place with location name and other common attributes Restaurant menu ConcertHall hall size 在两个单独的表中