我有三个模型,一个超类和两个子类。这两个子类都属于另一个模型(通过外键表示)。
我不确定我的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(...)
我有点怕弄乱数据库,因此非常感谢您的帮助。预先感谢!
答案 0 :(得分:2)
使Energy
为抽象超类,您无需在数据库中处理单独的Energy表。您可以按照所述,将Energy
模型中的ForeignKey保留在建筑物中。可以在here中找到有关抽象模型的更多信息。