在Django中我有論文型號:如何建模M2M關係下相關的表可以是一個城市,一個區域(州)或國家
class Artist(models.Model):
name = models.CharField(max_length=128)
born_place = models.ForeignKey(???)
dead_place = models.ForeignKey(???)
live_places = models.ManyToManyField(???)
work_places = models.ManyToManyField(???)
class Country(models.Model):
iso = models.CharField(max_length=2, primary_key=True)
name = models.CharField(max_length=50)
class Region(models.Model):
iso = models.CharField(max_length=2, blank=True)
name = models.CharField(max_length=150)
country = models.ForeignKey('Country')
class City(models.Model):
name = models.CharField(max_length=150)
region = models.ForeignKey('Region')
所有地方(born_place
,dead_place
, live_places
,work_places
)可以是City
或Region
或Country
。而City
應該有一個Region
,而Region
應該有一個Country
。
我該如何做到這一點?
對不起,遲交。感謝所有的答案。他們都是很好的答案。最後我選擇模型繼承解決方案。我選擇它是因爲它適合我的需求和結構非常好(每個類型(國家等)都有一個連貫的表格)。與* o.elias *提出的模型唯一的區別在於我沒有在Territory類中放置任何字段。這樣國家,地區和城市的表格更加連貫*(所有的信息都在同一個地方)。我需要這樣做,因爲有些表可以直接進行諮詢/編輯(例如使用MS Access)。 – Etienne 2010-09-03 16:00:52