django - 如何使用外键设置 Django 模型继承
问题描述
我有三个模型,一个超类和两个子类。两个子类都属于另一个模型(通过外键表示)。
我不确定我的 FK 的最佳设置是什么样的?我是否将外键放在超类、子类或两者中?也许不仅有一种方法,还有多种方法?
每个建筑物可以有许多能源对象,这意味着它可以有许多加热和冷却对象。每个 Heating/Cooling/Energy 对象都属于一个建筑物。所以经典的一对多关系用外键表示。
这是我的模型:
超类
class Energy(models.Model):
year : models.BigIntegerField(...)
value : models.IntegerField(...)
connected_building : ForeignKey ??????
子类
class Heating(Energy):
connected_building : ForeignKey ?????
class Cooling(Energy):
connected_building : ForeignKey ?????
相关类
class Building(models.Model):
name = models.Charfield(...)
我有点害怕弄乱我的数据库,所以非常感谢任何帮助。提前致谢!
解决方案
Energy
创建一个抽象超类,您不必在数据库中处理单独的能量表。如您所述,您可以将 ForeignKey 保留在Energy
模型中。可以在此处找到有关抽象模型的更多信息。
推荐阅读
- async-await - Nest.js 异步行为
- python - SonarQube 忽略 pylint 结果
- lua - OpenResty:未找到“套接字”模块
- javascript - 过滤的输入字段对按钮单击输入没有反应
- google-apps-script - AppsScript 根据发件人更改日历颜色
- javascript - 如何修改我的代码以获取所有非唯一值?
- angular - 类型“EventTarget”上不存在属性“值”。ngtsc(2339)
- python - OSError:[E050] 找不到模型“en_core_web_sm”。它似乎不是快捷链接、Python 包或数据目录的有效路径
- python - 如何从 Django 引导按钮运行 python 函数
- batch-file - Windows批处理文件循环检查文件是否存在