奇怪,有這麼多不同的答案,我想人都有自己的喜好。這是我想做到這一點:
class Airport(models.Model):
name = models.CharField(max_length=200)
class Airline(models.Model):
name = models.CharField(max_length=200)
terminals = models.ManyToManyField('Terminal', related_name='airlines')
class Terminal(models.Model):
name = models.CharField(max_length=200)
airport = models.ForeignKey('Airport', related_name='terminals')
這允許並假定以下條件:
- ,航空公司可以存在於一個或多個 端子
- 一個給定的機場終端可以有更多的一個或多個 航空公司
- 終端只能存在於 單個機場
請注意,在此設置中,機場和航空公司始終通過碼頭間接鏈接。我個人認爲這是一個功能,而不是一個錯誤。機場總是至少有一個終端,即使終端是整個機場。
或者
你可能認爲這是稍微正確的,從邏輯上看,以創建模型,像這樣:
class Airport(models.Model):
name = models.CharField(max_length=200)
class Airline(models.Model):
name = models.CharField(max_length=200)
class Terminal(models.Model):
name = models.CharField(max_length=200)
airport = models.ForeignKey('Airport', related_name='terminals')
airlines = models.ManyToManyField('Airline', related_name='terminals')
在實際應用中的數據將表現大致相同。然而,有人可能會提出一個觀點,認爲擁有「航空公司」的終端在概念上比擁有終端的航空公司更有意義。畢竟,航空公司不包含終端,但每個終端都包含這些航空公司。