我向模型添加了约束,但似乎没有影响,因为我仍然可以在不提供任何字段的情况下创建模型实例。请帮助我强制执行约束以检查两个字段中至少一个字段不为空或为空。
领域:
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
check=Q(name1__isnull=True, name2__isnull=True, _connector='XOR')