Wagtail 未正确显示 ValidationError

Wagtail not shows ValidationError correctly

我对 wagtail.core.models.Page 后代进行异或验证:

def save(self, *args, **kwargs):
    if self.video_playlist is not None and self.gallery is not None:
        raise ValidationError(_("Only gallery or only video playlist must be filled"))
    elif self.video_playlist is None and self.gallery is None:
        raise ValidationError(_("Only gallery or only video playlist must be filled"))
    super(OkoPage, self).save(*args, **kwargs)

但不是红色突出显示鹡鸰returns 400 错误。 怎么做才对?

您应该在模型的 clean 方法中执行此验证,而不是在 save 中。这样,ValidationError 将被 Django 的表单处理逻辑捕获并转换为表单上的错误消息。

save 方法仅在表单处理完成后调用,因此此时抛出 ValidationError 已为时已晚,无法很好地处理它。