0

有两种模式学院、系

class College(models.Model):
    name = models.CharField(max_length=200)
    uid = models.CharField(max_length=10, unique=True)
    website = models.URLField()

class Dept(models.Model):
    name = models.CharField(max_length=200)
    uid = models.CharField(max_length=10)
    college = models.ForeignKey(College)

在这里,我们可以用两种方式说在关系中......

  1. 每个学院都有很多部门
  2. 每个部门属于一个学院(以上模型属于)

使用第二种设计时出现问题

大学中的每个部门不能有重复的名称.. 即,我们不能在一个大学中有多个部门.. 怎么做?

是否采用了正确的数据库设计?如果没有怎么办?

4

1 回答 1

1

如果不能将一个部门划分为多个学院,那么您的外键模型看起来是正确的。如果一个部门可以划分为多个学院,则必须设置一个带有“through”参数的 ManyToMany,并在槽模型中添加一个“unique_together”,如下所示:

对于 FK,要添加您的约束,您应该按如下方式更改 Dept:

class Dept(models.Model):
    name = models.CharField(max_length=200)
    uid = models.CharField(max_length=10)
    college = models.ForeignKey(College)

    class Meta:
        unique_together = (('name', 'college'),)
于 2013-04-11T10:07:39.023 回答