我有一個半複雜的模型關係在我的Django應用程序。使用ManyToMany通過正確的複雜模型在Django
我有一個集團(公司),它可以有很多地方 所以
一個組可以有許多供應商(人)爲好。問題是,提供者通過組地點連接到特定的組。這就是說供應商可以擁有那個位置。實際上,我相信一個提供者可以有很多位置(屬於多個組)。我在Django的有這到目前爲止,我不認爲正確的方法是這樣的:
class GroupLocations(models.Model):
address_id = models.ForeignKey(Address, on_delete= models.SET_NULL)
group_id = models.ForeignKey(Group, on_delete=models.SET_NULL)
doing_business_as = models.CharField(max_length = 255)
created_at=models.DateField(auto_now=false, auto_now_add=true)
updated_at=models.DateField(auto_now=true, auto_now_add=true)
class ProviderLocations(models.Model):
provider_id = models.ForeignKey(Provider, on_delete=models.CASCADE)
group_location_id = models.ForeignKey(GroupLocations, on_delete=models.CASCADE)
created_at=models.DateField(auto_now=false, auto_now_add=true)
updated_at=models.DateField(auto_now=true, auto_now_add=true)
我的問題是,是否我的組(和/或供應商)模式需要有某種關係的規定在他們的模型定義?
class Group(models.Model):
group_name = models.CharField(max_length=50)
group_contact= models.CharField(max_length=50)
#do I need something like the following:
providers = models.ManyToMany(Provider, through='ProviderLocations')
provider_locations = models.ManyToMany(Group, through='GroupLocations'
class Provider(models.Model):
created_at=models.DateField(auto_now=false, auto_now_add=true)
updated_at=models.DateField(auto_now=true, auto_now_add=true)
groups = models.ManyToManyField(Group, through='GroupLocations')
group_locations = models.ManyToMany(GroupLocations, through='ProviderLocations')
這是這樣我就可以從供應商獲得組的列表,以及組位置 ,我可以從一組供應商和供應商的名單locations.Actually更喜歡的位置加入其中哪一個。我仍然在學習Django'ss關係系統,所以對如何使這些關係在一起工作的任何建設性批評都會有幫助。
你可能是對的,我不得不重新考慮這個。我不確定該小組如何通過這些位置查看提供商(因爲它們是通過group_locations連接的)。我相信我認爲這種分離的原因是......提供者可能是一個組的一部分,但在特定的位置。因此,如果我明白了這一點:提供者將通過提供者位置(它有一個組位置,這是它如何返回組)的一部分,從上面的一行開始工作?或者是你在提供商位置和組位置上詢問的內容? – Codejoy
是的,這正是ProviderLocation或GroupLocation模型爲您提供的。兩者都意味着冗餘。 – e4c5
改變了我的評論。 – Codejoy