2016-09-26 16 views
0

Djangoには2つの親と関連付ける必要があるモデルがありますが、どのようにコード化するかを考えようとしています。2つの親と関連付けることができるDjangoモデル

主な問題は、BuildingモデルがHeadquarterにリンクされていることです。各Headquarterには通常、聴講したすべての建物に電気を供給するElectricSupplyがありますが、BuildingにもそれぞれElectricSupplyがある可能性があります。

さらに、各ElectricSupplyは、月単位で格納された1つ以上のモデルとリンクされている。

最終的には、電源が聴取先または各建物から供給されていても、消費電力は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') 

私を助けることを望みます。ありがとう。

答えて

0

ElectricSupplyからビルディングを指す必要があるので、すべての建物にElectricSupplyが必要であると思うし、Headquarterを見たい場合は、外部キーがHeadquartedを指している建物から簡単に取得できます。また、私はすべての建物がElectricBillとの関係にあるべきだと思うので、ElectricBillの外部キーをBuildingを指すように変更する必要があります。

+0

これは今のところですが、ここで問題となるのは、ElectricSupplyがすべての建物で同じであるとカウントしていないことです。つまり、私は3つの建物を持っていますが、1つのElectricSupplyしか持っていないので、建物に向ける必要があり、他のものは空白にしておく必要があります。だから、それは間違っていて、それは本部モデルがどこにあるのかです... –

+0

どうしてそれが間違っていますか?建物と本部の両方で外部キーを 'null = true'に設定します。 –

+0

さて、 'ElectricSupply'を' Building'と 'Headquarter'にリンクし、両方のForeignKeysを' null = True'に設定することを意味します。私はDjangoに、異なるモデルやそれより少しエレガントなイメージを指すためにユニークな列(ユニークな属性)を使用する方法があるかどうかを知りたいのですが...そうでなければ、それは良いと思いますあまりにも。 –

関連する問題