为 Django 模型中的相关对象字段添加 CheckConstraint

问题描述 投票:0回答:1

我有两个 Django 模型:

class A(models.Model):
    is_pure = models.BooleanField()

class B(models.Model):
    a = models.ForeignKey(A, on_delete=models.CASCADE)

    class Meta:
        constraints = [
            models.CheckConstraint(
                check=models.Q(a__is_pure=True),
                name="a_is_pure"
            )
        ]

我想添加一个约束,即任何 B 实例都不能引用其

is_pure
字段为 False 的 A 实例。 当我添加上述代码、进行迁移并尝试迁移时,出现此错误:

(models.E041) 'constraints' refers to the joined field 'a__is_pure'.

Django 目前支持这样的东西吗?如果没有,你有什么推荐?

python django django-models
1个回答
0
投票

在模型约束中,只能引用模型本身的字段。 如果要引用ForeignKey模型的字段,可以重写clean()方法。 您可以在此处查看示例:https://stackoverflow.com/a/75640733/20712534

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.