我是django的新手。在为我正在做的应用程序编写模型时,我觉得我做错了,因为我使用的所有外键都用于单个模型(票证模型具体)
我一开始的想法是,我希望每张故障单都能保留其创建者的信息,这张故障分配给哪个团队以及对故障单的评论。以及其他不需要外键的信息。我这样做了吗?我不知道为什么,但我觉得有更好的方法。
class Team(models.Model):
name = models.CharField(max_length=200)
description = models.CharField(max_length=2000)
members = models.ManyToManyField(User, through='Team_members')
def __str__(self):
return self.name
class Ticket(models.Model):
name = models.CharField(max_length=200)
creator = models.ForeignKey(User, on_delete=models.CASCADE)
team = models.ForeignKey(Team, on_delete=models.CASCADE)
comments = models.ForeignKey(Comment, on_delete=models.CASCADE)
#worker = models.ForeignKey(User, on_delete=models.CASCADE) *to be finished
description = models.CharField(max_length=500)
status = models.BooleanField(default=False)
date_opened = models.DateTimeField('date opened')
date_closed = models.DateTimeField('date closed',null=True, blank=True)
def __str__(self):
return self.name
class Team_member:
team = models.ForeignKey(Team)
user = models.ForeignKey(User)
date = models.DateTimeField('date joined')
class Comment:
text = models.CharField(max_length=2000)
user = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.text
答案 0 :(得分:1)
你的问题实际上与Django很少(比如,没什么?)。 请阅读database normalization,它应该回答您的问题。
关于你的模型,我注意到以下几点:
User
可能是Team
(服务?)的成员或打开机票的人。如果是这样的话:当您拥有worker
外键时,您很可能在team
模型中不需要Ticket
。这将是多余的,因为worker
与Team
有关系。Team_member
不是pythonic,PEP8兼容版本为TeamMember