📝 Практикум 7: задачи
⚡ Все задачи — кратко
Контекст: создаём сериализаторы для 8 моделей интернет-магазина в store/serializers.py.
- 1:
CategorySerializer—ModelSerializer, fields='__all__' - 2:
SupplierSerializer—ModelSerializer, fields='__all__' - 3.1:
ProductSerializer— read + nested Category, Supplier - 3.2:
ProductCreateUpdateSerializer— write, FK-ключи - 4.1:
ProductDetailSerializer— read + nested Product - 4.2:
ProductDetailCreateUpdateSerializer— write, FK product - 5:
AddressSerializer— CRUD - 6.1:
CustomerSerializer— read + nested Address + read_only_fields - 6.2:
CustomerCreateUpdateSerializer— write, явные поля - 6.3: Валидация
phone_number— regex^\d{10,15}$ - 7.1:
OrderSerializer— read + nested Customer + read_only_fields - 7.2:
OrderCreateUpdateSerializer— write + read_only_fields - 8.1:
OrderItemSerializer— read + nested Product, Order - 8.2:
OrderItemCreateUpdateSerializer— write, FK-ключи - 8.3: Валидация
quantity— не больше 1000
Задача 1 — Сериализатор для модели Category
Задание 1
Создайте сериализатор для модели Category:
- Позволяет получать, создавать и обновлять записи категории.
Файл: store/serializers.py
Задача 2 — Сериализатор для модели Supplier
Задание 2
Создайте сериализатор для модели Supplier:
- Позволяет получать, создавать и обновлять записи поставщика.
Задача 3 — Сериализаторы для модели Product
Задание 3.1 — Сериализатор для получения данных
Создайте сериализатор для модели Product:
- Позволяет получать данные продукта.
- Включает связанные объекты
CategoryиSupplierв виде вложенных сериализаторов.
Задание 3.2 — Сериализатор для создания и обновления данных
Создайте сериализатор для модели Product:
- Позволяет создавать и обновлять записи продукта.
- Использует первичные ключи для полей
categoryиsupplier.
Задача 4 — Сериализаторы для модели ProductDetail
Задание 4.1 — Сериализатор для получения данных
Создайте сериализатор для модели ProductDetail:
- Позволяет получать данные деталей продукта.
- Включает связанные объекты
Productв виде вложенного сериализатора.
Задание 4.2 — Сериализатор для создания и обновления данных
Создайте сериализатор для модели ProductDetail:
- Позволяет создавать и обновлять записи деталей продукта.
- Использует первичный ключ для поля
product.
Задача 5 — Сериализатор для модели Address
Задание 5
Создайте сериализатор для модели Address:
- Позволяет получать, создавать и обновлять записи адреса.
Задача 6 — Сериализаторы для модели Customer
Задание 6.1 — Сериализатор для получения данных
Создайте сериализатор для модели Customer:
- Позволяет получать данные клиента.
- Включает связанные объекты
Addressв виде вложенного сериализатора. - Поля
date_joined,deletedиdeleted_atне должны быть доступны для создания и изменения.
Задание 6.2 — Сериализатор для создания и обновления данных
Создайте сериализатор для модели Customer:
- Позволяет создавать и обновлять записи клиента.
- Использует первичный ключ для поля
address. - Поля
date_joined,deletedиdeleted_atне должны быть доступны для создания и изменения.
Задание 6.3 — Валидация номера телефона
Создайте метод валидации для поля phone_number, который:
- убедится, что номер телефона состоит из 10–15 цифр и не содержит букв или специальных символов.
Задача 7 — Сериализаторы для модели Order
Задание 7.1 — Сериализатор для получения данных
Создайте сериализатор для модели Order:
- Позволяет получать данные заказа.
- Включает связанные объекты
Customerв виде вложенного сериализатора. - Поле
order_dateне должно быть доступным для создания и изменения.
Задание 7.2 — Сериализатор для создания и обновления данных
Создайте сериализатор для модели Order:
- Позволяет создавать и обновлять записи заказа.
- Использует первичный ключ для поля
customer. - Поле
order_dateне должно быть доступным для создания и изменения.
Задача 8 — Сериализаторы для модели OrderItem
Задание 8.1 — Сериализатор для получения данных
Создайте сериализатор для модели OrderItem:
- Позволяет получать данные элемента заказа.
- Включает связанные объекты
ProductиOrderв виде вложенных сериализаторов.
Задание 8.2 — Сериализатор для создания и обновления данных
Создайте сериализатор для модели OrderItem:
- Позволяет создавать и обновлять записи элемента заказа.
- Использует первичные ключи для полей
orderиproduct.
Задание 8.3 — Валидация количества товара
Создайте метод валидации для поля quantity, который:
- убедится, что количество товара не больше тысячи.