可以与两个父母相关联的 Django 模型
Posted
技术标签:
【中文标题】可以与两个父母相关联的 Django 模型【英文标题】:Django model which could be associated with two parents 【发布时间】:2017-02-03 18:08:32 【问题描述】:我在 Django 中有一个模型,我认为它需要与两个父母相关联,但我正在尝试弄清楚如何对其进行编码。
主要问题是我们有Building
模型与Headquarter
链接。每个Headquarter
通常都有一个ElectricSupply
为所有总部大楼供电,但也有可能每个Building
可以有自己的ElectricSupply
。
此外,每个ElectricSupply
都与一个或多个ElectricBill
模型相关联,这些模型按月存储。
所以,不管是从指挥部还是每栋楼,我最终都必须能够得到Headquarter
的用电量。
class Headquarter(models.Model):
# ...
def get_consumption(self):
# Here I need to know where to look for the supply
class Building(models.Model):
# ...
headquarter = models.ForeignKey(Headquarter, related_name='buildings')
class ElectricSupply(models.Model):
# Here I don't know where to point, Headquarter or Building, or both?
class ElectricBill(models.Model):
# ...
supply = models.ForeignKey(ElectricSupply, related_name='bills')
希望你能帮助我。谢谢。
【问题讨论】:
【参考方案1】:我认为每个建筑物都应该有 ElectricSupply,所以你应该从 ElectricSupply 指向 Building,然后如果你想找到 Headquarter,你可以很容易地从 Building 那里得到它,在那里你也有指向 Headquarted 的外键。另外我认为每个建筑物都应该与 ElectricBill 有关系,因此您应该将 ElectricBill 中的外键更改为指向 Building。
【讨论】:
现在就是这样,但这里的问题是,当所有建筑物的 ElectricSupply 相同时,我没有计算在内。我的意思是,例如,我有 3 个建筑物,但只有一个 ElectricSupply,所以我需要将它指向一个建筑物,而将其他建筑物留空。所以,这是错误的,这就是总部模型有意义的地方...... 为什么会出错?将建筑物和总部的外键设置为null=true
。
好的,你的意思是将ElectricSupply
链接到Building
和Headquarter
,并将ForeignKeys设置为null=True
。我想知道 Django 中是否有一种方法可以使用唯一列(唯一属性)来指向不同的模型或类似的东西,这可能会更优雅一些……但如果没有,是的,那听起来不错也是。以上是关于可以与两个父母相关联的 Django 模型的主要内容,如果未能解决你的问题,请参考以下文章