因此,我的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
然后在部门表中:
name whid
Department1 1
Department1 2
Department2 1
Department2 2
Department1 1 <----How do I stop this record from being created
任何帮助表示赞赏。谢谢。
您可以unique=True
在中设置ForeignKey
,但这基本上是OneToOneField
[Django-doc],因此您可以将模型重写为:
class Department(models.Model):
name = models.CharField(max_length=50)
whid = models.OneToOneField(WHID, on_delete=models.CASCADE)
但是,如果您想为给定的允许多个 ,但对于同一个具有唯一的,则可以使用[Django-doc]的django-2.2以后的版本:Department
WHID
name
WHID
UniqueConstraint
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')
]
或在django-2.2之前,您可以使用unique_together
[Django-doc]:
class Department(models.Model):
name = models.CharField(max_length=50)
whid = models.ForeignKey(WHID, on_delete=models.CASCADE)
class Meta:
unique_together = [
['name', 'whid']
]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句