Django 模型约束两个字段中至少一个字段不为 null 或为空

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

我向模型添加了约束,但似乎没有影响,因为我仍然可以在不提供任何字段的情况下创建模型实例。请帮助我强制执行约束以检查两个字段中至少一个字段不为空或为空。

领域:

class Fruit(models.Model):
   name1 = models.CharField(max_length=255, blank=True, null=True)
   name2 = models.CharField(max_length=255, blank=True, null=True)

    class Meta:
        constraints = [
            models.CheckConstraint(
                check=(
                    Q(name1__isnull=False)
                    | Q(name2__isnull=False)
                    | ~Q(name1__exact='')
                    | ~Q(name2__exact='')
                ),
                name='color_names_not_null_or_empty'
            )
        ]

Django v4 Postgres v15

python django postgresql django-orm
1个回答
0
投票
check=Q(name1__isnull=True, name2__isnull=True, _connector='XOR')
© www.soinside.com 2019 - 2024. All rights reserved.