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

PUT и PATCH в DRF

Вопрос

Чем partial_update (PATCH) отличается от update (PUT) в ModelViewSet?

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

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

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

Коротко

Правильный ответ: PATCH создаёт сериализатор с partial=True, обязательные поля можно опустить. PUT по смыслу заменяет ресурс целиком, поэтому сериализатор требует все обязательные поля.

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

  1. PATCH не проходит валидацию сериализатора, поэтому он быстрее
  2. PUT создаёт новый объект, а PATCH удаляет старый и сохраняет копию
  3. PATCH создаёт сериализатор с partial=True, обязательные поля можно опуститьправильный ответ
  4. Разницы нет: DRF обрабатывает оба метода одним и тем же кодом

Разбор

PUT по смыслу заменяет ресурс целиком, поэтому сериализатор требует все обязательные поля. PATCH обновляет часть полей: partial=True отключает обязательность, но переданные поля валидируются как обычно. Ни один из них не создаёт и не удаляет объекты.

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

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