如何在Django模型中为每个父外键编码唯一约束?

b1payxdu  于 2023-01-06  发布在  Go
关注(0)|答案(1)|浏览(93)

下面是我的代码:

from django.db import models

class Parent(models.Model):
    name = models.CharField(max_length=50, unique=True)

    def __str__(self):
        return str(self.name)

class Child(models.Model):
    parent = models.ForeignKey(Parent, on_delete=models.CASCADE)
    name = models.CharField(max_length=50, unique=True)
    
    def __str__(self):
        return str(self.name)

我的数据库中的家长:
1.罗根
1.史密斯
1.母鹿
在管理 Jmeter 板中:
首先,我创建了一个孩子,名字叫约翰,他的父母是史密斯。。它工作了!
在那之后,每当我创建一个名字也是John的子节点,而这一次的父节点是Doe或Rogan,它就会说:
"具有此名称的子项已存在。"

我试着在谷歌上搜索,但似乎找不到答案。
我不是以英语为母语的人,请原谅我。

oxiaedzo

oxiaedzo1#

您使用的是**UniqueConstraint**[Django-doc]:

class Child(models.Model):
    parent = models.ForeignKey(Parent, on_delete=models.CASCADE)
    name = models.CharField(max_length=50)

    def __str__(self):
        return f'{self.name}'

    class Meta:
        constraints = [
            models.UniqueConstraint(
                fields=('name', 'parent_id'), name='unique_child_name_per_parent'
            )
        ]

相关问题