Django模型中具有外键的重复值

Django模型中具有外键的重复值,django,django-models,django-2.2,Django,Django Models,Django 2.2,因此,我的django应用程序中有几个模型如下所示: class WHID(models.Model): whid = models.CharField(max_length=8) class Department(models.Model): name = models.CharField(max_length=50) whid = models.ForeignKey(WHID, on_delete=models.CASCADE) 我想拥有它,这样我就不能为每个WH

因此,我的django应用程序中有几个模型如下所示:

class WHID(models.Model):
    whid = models.CharField(max_length=8)

class Department(models.Model):
    name = models.CharField(max_length=50)
    whid = models.ForeignKey(WHID, on_delete=models.CASCADE)
我想拥有它,这样我就不能为每个WHID创建重复的部门名称

因此,如果我在WHID表中有两个条目:

 id  whid 
  1  whid1
  2  whid2
然后在Department表中:

  name         whid
  Department1    1
  Department1    2
  Department2    1
  Department2    2
  Department1    1 <----How do I stop this record from being created
name whid
部门1
部门1 2
部门2 1
部门2

部门1 1您可以在
外键中设置
unique=True
,但这基本上是一个选项,因此您可以将模型重写为:

class Department(models.Model):
    name = models.CharField(max_length=50)
    whid = models.OneToOneField(WHID, on_delete=models.CASCADE)
或之前,您可以使用:

班级部门(models.Model):
name=models.CharField(最大长度=50)
whid=models.ForeignKey(whid,on_delete=models.CASCADE)
类元:
唯一_在一起=[
['name','whid']

]
在模型元中。在部门记录中添加了更多数据以进行澄清。我不认为OneTONE是我在这里需要的,因为我可以为同一个WHID设置多个部门
class Department(models.Model):
    name = models.CharField(max_length=50)
    whid = models.ForeignKey(WHID, on_delete=models.CASCADE)

    class Meta:
        constraints = [
            models.UniqueConstraint('name', 'whid', name='whid_name')
        ]
class Department(models.Model):
    name = models.CharField(max_length=50)
    whid = models.ForeignKey(WHID, on_delete=models.CASCADE)

    class Meta:
        unique_together = [
            ['name', 'whid']
        ]