Урок 34. Практикум 7: Сериализаторы DRF
⚡ Кратко: Практикум 7 — Сериализаторы DRF
13 практических задач на создание сериализаторов DRF для моделей интернет-магазина. Паттерн: два сериализатора на модель — один для чтения (с вложенными объектами), другой для записи (с FK-ключами). Добавляется валидация полей (validate_phone_number, validate_quantity).
- Задачи 1–2: Category, Supplier — базовый
ModelSerializer - Задачи 3–4: Product, ProductDetail — read/write-пара с nested
- Задача 5: Address — базовый CRUD
- Задачи 6.1–6.3: Customer — read/write + валидация телефона
- Задачи 7.1–7.2: Order — read/write + read_only_fields
- Задачи 8.1–8.3: OrderItem — read/write + валидация quantity
Топ-3 ошибки: 1) Забыть read_only=True у вложенного сериализатора при чтении. 2) Не указать read_only_fields для автоматических полей. 3) Не импортировать re для validate_phone_number.
📖 О чём этот урок
Урок 34 — практикум 7 по Django REST Framework. Задачи взяты из лекции «Django Practicum 7». Цель — закрепить создание ModelSerializer для всех восьми моделей интернет-магазина (Category, Supplier, Product, ProductDetail, Address, Customer, Order, OrderItem).
Новый теоретический материал не вводится — только практика. Если нужно освежить теорию сериализаторов — загляни в Урок 33.
Что закрепляем
- Создание
ModelSerializerдля CRUD-операций - Два сериализатора на модель: для чтения (nested objects) и записи (FK-ключи)
read_only=Trueу вложенных сериализаторовread_only_fieldsдля автоматически устанавливаемых полей- Кастомная валидация через
validate_<field_name> - Регулярные выражения для валидации форматов
📚 Что повторить перед изучением
- ← Урок 33: Основы DRF часть 3 (lookup_field, filter_backends)
- Django models: ForeignKey, OneToOneField, CharField, DateTimeField
- DRF: Serializer, ModelSerializer, Meta класс
- Python: регулярные выражения, модуль
re - Модели store:
Product,Category,Order,OrderItem,Customer,Address,Supplier,ProductDetail
🎯 Что изучать дальше
- → Урок 35: Мини-проект Agile (DRF часть 3)
- DRF: ViewSets, Routers, Permissions
- DRF: Пагинация —
PageNumberPagination - DRF: Вложенные записи —
writable nested serializers