Django 约束:如果外键为空,则字段必须为真

Django constraints: if foreignkey is empty, then field must be true

我正在阅读 Django 的 documentation on CheckConstraint 以避免覆盖 .save() 方法来实现此行为:

MyModel(models.Model):
    user = models.ForeignKey(User, null=True)
    is_default = models.BooleanField()

if m.user is None and m.is_default -> valid
if m.user is None and not m.is_default -> invalid
if m.user is not None and m.is_default -> invalid
if m.user is not None and not m.is_default -> valid

基本上,我希望 is_default 只有在分配了用户时才为真。

我可以使用 CheckConstraint 执行此操作还是我必须重写 .save() 方法?

models.CheckConstraint(
    check=(models.Q(is_default=True, user__isnull=True) | models.Q(is_default=False, user__isnull=False)),
    name='...')