django - Django模型中具有外键的重复值
问题描述
因此,我的 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)
但是,如果您希望给定的 s允许多个 s ,但相同的 s具有唯一性,则可以使用[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']
]
推荐阅读
- javascript - 我应该使用什么搜索例程来匹配我的 HTML 表的确切条目?
- android - Zxing 在某些设备中不显示摄像头
- java - How to intersect polygon layer with my current GPS in android GIS sdk 100.2.1
- powershell - 如何将哈希表中的数组导出为 CSV?
- php - yii2 mpdf,不显示谷歌地图静态卫星视图
- sql - 如何确定多个日期值的模式以及当有多个模式时该怎么做
- c++ - 如何在静态函数中使用成员函数数组?
- javascript - 在 fullpage.js 中自动播放或滚动幻灯片
- windows - SystemParametersInfoForDPI 损坏内存
- automated-tests - 使用范围报告设置 Klov