5.1 Структурирование FastAPI, APIRouter и написание моделей Pydantic
4 из 4 шагов пройдено

Создание моделей интернет магазина

После определения основных маршрутов, нам необходимо создать модели Pydantic для нашего приложения. Модели мы будем хранить в файле app/schemas.py

На данный момент, мы будем хранить в нем только модели для категорий и продуктов. Добавим в этот файл следующий код:

from pydantic import BaseModel


class CreateProduct(BaseModel):
    name: str
    description: str
    price: int
    image_url: str
    stock: int
    category: int


class CreateCategory(BaseModel):
    name: str
    parent_id: int | None

Разберем эти модели. Модель CreateProduct будет отвечать за создание продукта и будет принимать следующие поля:

  • name: Имя товара, тип поля строка
  • description: Описание товара, тип поля строка
  • price: Цена товара, тип поля целое число
  • image_url: Ссылка на изображение товара, тип поля строка
  • stock: Количество товара в наличии, тип поля целое число
  • category: ID категории товара, тип поля целое число

Модель CreateCategory будет отвечать за создание категории товаров, и имеет 2 поля:

  • name: Имя категории, тип поля строка
  • parent_id: ID родительской категории, тип поля целое число

 

На этом разработка моделей была закончена, далее по курсу мы еще будем работать с  моделями Pydantic. А пока же перейдем в следующем разделе к работе с БД на примере этого интернет магазина.


  • Комментария
Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.

Как альтернатива варианту parent_id: int | None  можно использовать  parent_id: Optional[int] , импортировать из библиотеки  typing , часто такое вижу.

@Dmitriy_Novozhilov, в документации к FastAPI рекомендуется не использовать Optional для типизации

Не принципиально, но "граманазии" могут набежать. Предлагаю файл shemas переименовать в schemas

@Алексей_Бойко, Спасибо, поправил, опечатался и не заметил этого.