我被卡住了,需要一些新的眼睛在我的模型設計。我似乎無法圍繞如何最好地設計這個問題。Django模型設計使用ForeignKey和ManyToMany
REQS:
- 每個項目都可以有主動服務若干個等級的同時,與其他被設置爲關閉。沒有互斥
- 所有項目的層次都是一樣的。
- 我需要跟蹤特定項目上活動的層次。
我需要能夠將項目的收費日期與活動層相關聯。請參閱下面的收費日期澄清。- 項目和層'活動'字段不相關。
- 請參閱編輯以瞭解更多有關我的需求的想法。
這裏的模型:
class Project(models.Model):
name = models.CharField('project name', max_length=128)
company = models.ForeignKey('Company', related_name='projects')
# A project could have more than one instance
instances = models.ManyToManyField(Instance, related_name='projects')
type = models.CharField(max_length=128, blank=True)
start_date = models.DateField(null=True, auto_now=False, auto_now_add=False)
end_date = models.DateField(null=True, auto_now=False, auto_now_add=False)
active = models.BooleanField()
class Tier(models.Model):
TIERS = (('TI1', 'tier1'),
('TI2', 'tier2'),
('TI3', 'tier3'),
('TI4', 'tier4'),
('TI5', 'tier5'))
name = models.CharField(max_length=3, choices=TIERS)
active = models.BooleanField()
class TierHistory(models.Model):
project = models.ForeignKey(Project, related_name='tier_history')
tiers = models.ManyToManyField(Tier)
charge_date = models.DateField(null=True, auto_now=False, auto_now_add=True)
contact = models.ForeignKey(Contact)
一個編輯來澄清一些事情:
我遇到的是,鑑於目前設計的問題,我不覺得我跟蹤層次,以及他們是否以最佳方式活躍。這是所有這一切的主要目標;瞭解項目中哪些層次是活躍的,反過來能夠看到哪些項目曾經活躍過任何特定層次。
鑑於我目前的設計,我不能設置2級活躍項目1和不活躍的項目2
- 一個項目可以有多個活動的層次同時進行。
- 收費日期將用於每一層。我意識到我讀了我的規格錯誤。
- 我需要能夠報告,「項目1已使用第1層爲3個月,第2層爲6個月,從未使用第5層」
- 我需要能夠報告,「項目1和項目2有1級有源現在,項目1有4層活躍的1個月,項目3項,目前正在使用第5" 級
你說你被卡住了 - 這個設計是什麼問題導致你?您提到項目的'a'收費日期,但由於'TierHistory'對'Project'有一個'ForeignKey',因此每個項目可以有多個'TierHistories'和'charge_dates' - 是您想要的嗎? –
@KevinChristopherHenry,我對我最初的問題進行了編輯,以澄清我的問題並指定我需要每層的每層收費日期。 – yubus