Трясогузка не показывает ValidationError правильно - PullRequest
1 голос
/ 14 марта 2019

У меня есть XOR валидация 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)

Но вместо красной подсветки трясогузка возвращает ошибку 400. enter image description here Как это сделать правильно?

1 Ответ

2 голосов
/ 14 марта 2019

Вы должны выполнить эту проверку в методе clean для модели, а не в пределах save.Таким образом, ValidationError будет перехвачен логикой обработки формы Django и преобразован в сообщение об ошибке в форме.

Метод save вызывается только после завершения обработки формы, поэтому выдаетсяValidationError в этот момент уже слишком поздно, чтобы с ним хорошо справились.

...