@uncle_rufuzzz

Django админка сообщение об ошибке как у валидатора?

Имеется Django 4 и jazzmin.
В admin.py переопределениы методы save для объектов, у объекта есть проверка заполненных дат
Вопрос такой: если первая дата больше чем втора нужно выдать сообщение об ошибке (как у валидатора), но при этом остать в форме объекта?

def save(self, *args, **kwargs):
        if self.arrival_date > self.departure_date:
            raise forms.ValidationError("Arrival date can't be later than departure date.")


Вот такая конструкция вызывает Traceback,

messages.add_message(request, messages.ERROR, "Arrival date can't be later than departure date.")


Такая рисует целую кучу противоречащих сообщений, первое что произошла ошибка, второе что объект успешно сохранен и перенаправляет меня на список объектов...
62f8e7f240874561772920.png

Хотелось бы получать вот такое сообщение...
django-error-messages-1.png
  • Вопрос задан
  • 162 просмотра
Пригласить эксперта
Ответы на вопрос 1
@uncle_rufuzzz Автор вопроса
Для тех кто ищет более развернутый ответ.
В моделе необходимо реализовать метод clean

def clean(self):
    if self.arrival_date > self.departure_date:
        raise ValidationError("Arrival date can't be later than departure date.")


далее необходимо переопределить метод save (где Model - название Вашей модели)
def save(self, *args, **kwargs):
    if self.arrival_date > self.departure_date:
        return super(Model, self).clean()
    return super().save(*args, **kwargs)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы