Код Middle Django REST Framework спрашивают часто обновлено

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

Условие

Напишите validate_order(data): верните [True, validated] или [False, errors]. Правила: title обязательная строка 1-100 символов после обрезки пробелов (в validated хранится обрезанная); quantity обязательное целое 1-1000 (bool не целое); discount необязательное число 0-100, по умолчанию 0; если discount больше 50, нужен promo_code (непустая строка), иначе ошибка non_field_errors. Ошибки это словарь «поле -> список сообщений»: "required", "invalid", "out_of_range", для общей "promo_code required for discount > 50". Общая проверка выполняется только если поля без ошибок.

Примеры

validate_order({"title":" Чай ","quantity":2}) // [true, {"title":"Чай","quantity":2,"discount":0}]
validate_order({}) // [false, {"title":["required"],"quantity":["required"]}]
validate_order({"title":"x","quantity":true}) // [false, {"quantity":["invalid"]}]

Как подойти

Подсказки: 2
  1. Копите ошибки в словарь, не выходите на первой.
  2. Общую проверку делайте только при отсутствии ошибок полей.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.