如何解决如何仅为子模型设置唯一值?
我有以下相关模型:
class DeviceType(models.Model):
type_name = models.CharField(primary_key=True,max_length=64,unique=True)
type_description = models.TextField(max_length=512,blank=True)
class DeviceTypeMarker(models.Model):
marker_status = IntegerField()
marker_status_text = models.CharField(max_length=64)
marker = models.ImageField(upload_to='images/types/')
marker_device_type = models.ForeignKey(DeviceType,on_delete=models.CASCADE,related_name='marker')
可以定义许多 DeviceType
元素的地方。对于每个 DeviceType
元素,可以有许多不同的 marker_status
、marker_status_text
和 marker
。问题是我不希望在单个 DeviceType
中重复这些元素。它们可以重复,但只能在另一个 DeviceType
中重复。
例如,如果type1是一个DeviceType
对象,那么只能有一个值为“1”的marker_status
,只有一个值为“error”的marker_status_text
,对于marker
。此值只能在其他 DeviceType
对象中重复。例如,type2..
这是怎么做到的?
解决方法
因此您应该将 UniqueConstraint 与所有应该唯一的字段一起添加
class Meta:
constraints = [
models.UniqueConstraint(
fields=['marker_status','marker_status_text','marker','marker_device_type'],name='unique_for_device')
]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。