Django模型中具有外键的重复值
因此,我的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
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']
]