Задать вопрос
maxclax
@maxclax

Почему в Django clean() не проходит проверку в тестах?

Имею модель и в ней метод
def clean(self):
        # проверка на совпадение входной и выходной валюты
        if self.ccy == self.base_ccy:
            raise ValidationError(_('course.model.clean.unique'))
        # проверка на обратное направления
        if Course.objects.filter(ccy=self.base_ccy, base_ccy=self.ccy):
            raise ValidationError(_('course.model.clean.reunique'))


при прохождении тестов в таком виде он не проходит из за того что не вызывает clean:

# проверка на добавление обекта с одинаковым направлением
        with self.assertRaises(ValidationError):
            Course.objects.create(ccy=self.course_1.base_ccy, base_ccy=self.course_1.base_ccy)


приходиться добавлять .clean() в конце. Что не так? Почему метод не вызывает по умолчанию?
  • Вопрос задан
  • 277 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
dizballanze
@dizballanze
Software developer at Yandex
Из документации:

Note, however, that like Model.full_clean(), a model’s clean() method is not invoked when you call your model’s save() method.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
Strikt Москва
от 100 000 до 180 000 ₽
Sim-Ba Pay Санкт-Петербург
от 180 000 ₽
Крона Лабс Екатеринбург
от 200 000 ₽