首页 > 解决方案 > 如何使用外键设置 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(...)

我有点害怕弄乱我的数据库,所以非常感谢任何帮助。提前致谢!

标签: djangodjango-modelsforeign-keys

解决方案


Energy创建一个抽象超类,您不必在数据库中处理单独的能量表。如您所述,您可以将 ForeignKey 保留在Energy模型中。可以在此处找到有关抽象模型的更多信息。


推荐阅读