Выбор ответа Middle Django REST Framework обновлено

Порядок валидации сериализатора

Вопрос

Где правильно проверить, что end_date позже start_date?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: В методе validate(self, attrs), где доступны все поля сразу. validate<field получает только значение своего поля.

Варианты ответа

  1. В методе validate(self, attrs), где доступны все поля сразуправильный ответ
  2. В validate_end_date, там доступен start_date через self.start_date
  3. Во вьюхе после serializer.save()
  4. В to_representation

Разбор

validate_<field> получает только значение своего поля. Проверки между полями пишут в validate(attrs), который вызывается после проверки отдельных полей. После save() проверять поздно, данные уже в базе, а to_representation отвечает за вывод, а не за вход.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.