我还在学习如何设置关系数据库。我正在尝试创建一个跟踪大学,部门和他们的程序的数据库。我的问题是关系之一。每所大学可能有一个或多个部门。这种关系应该是多对多的。每个部门可能有一个或多个程序,所以我可以看到部门和程序之间的关系是多对多的。
我遇到的问题是,如果我想拥有属于大学的部门,我觉得我应该使用中介将程序附加到该部门。但是,如果我想在同一个部门添加另一个程序,我最终会有两个属于同一个大学的相同部门。这看起来不对。
换句话说:
class Department(models.Model):
'''
'''
code = models.CharField(max_length=80,unique=True)
description = models.CharField(max_length=255)
def __unicode__(self):
return '{}'.format(self.description)
class Universities(models.Model):
'''
'''
code = models.CharField(max_length=80,unique=True)
description = models.CharField(max_length=255)
departments = models.ManyToManyField(Department,through='UniversityHasDepartment')
class Program(models.Model):
'''
'''
code = models.CharField(max_length=80,unique=True)
description = models.CharField(max_length=255)
def __unicode__(self):
return '{}'.format(self.description)
class UniversityHasDepartment(models.Model):
university = models.ForeignKey(Universities)
department = models.ForeignKey(Department)
program = models.ForeignKey(Program)
答案 0 :(得分:1)
我想你想使用外键。 (一对多关系)。
每所大学可以有多个部门,但一个部门只能有一所大学。 每个部门可以有多个程序,但程序只能有一个部门。
class University(models.Model):
name = models.CharField(max_length=80,unique=True)
description = models.CharField(max_length=255)
class Department(models.Model):
university = models.ForeignKey(University, related_name='departments')
name = models.CharField(max_length=80,unique=True)
description = models.CharField(max_length=255)
class Program(models.Model):
department = models.ForeignKey(Department, related_name='programs')
name = models.CharField(max_length=80,unique=True)
description = models.CharField(max_length=255)