如何使用外键设置Django模型继承

时间:2019-07-08 08:08:18

标签: django django-models foreign-keys

我有三个模型,一个超类和两个子类。这两个子类都属于另一个模型(通过外键表示)。

我不确定我的FK最佳设置是什么样的?是否将外键放在超类,子类或两者中?也许不仅有一种方法,而且有多种方法呢?

每个建筑物都可以具有许多能源对象,这意味着它可以具有许多供热和制冷对象。每个供暖/制冷/能源对象都属于一栋建筑物。因此,经典的一对多关系用外键表示。

这是我的模特:

超类

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(...)

我有点怕弄乱数据库,因此非常感谢您的帮助。预先感谢!

1 个答案:

答案 0 :(得分:2)

使Energy为抽象超类,您无需在数据库中处理单独的Energy表。您可以按照所述,将Energy模型中的ForeignKey保留在建筑物中。可以在here中找到有关抽象模型的更多信息。