Использование
Инициализация ModelManager¶
Для взаимодействия с моделью SQLAlchemy, fastapi-sqlalchemy-toolkit предоставляет
класс ModelManager. Его методы используются для взаимодействия с БД.
Создать экземпляр ModelManager для конкретной модели можно следующим образом:
from fastapi_sqlalchemy_toolkit import ModelManager
from .models import MyModel
from .schemas import MyModelCreateSchema, MyModelUpdateSchema
my_model_manager = ModelManager[MyModel, MyModelCreateSchema, MyModelUpdateSchema](
MyModel
)
В качестве аргумента передаётся модель SQLAlchemy. Кроме того, используется параметризация типов
класса ModelManager. В параметры типа передаётся модель SQLAlchemy, Pydantic модель для
создания объекта и Pydantic модель для обновления объекта.
Атрибут default_ordering определяет сортировку по умолчанию при получении списка объектов.
В него можно передать поле модели:
from fastapi_sqlalchemy_toolkit import ModelManager
from .models import MyModel
from .schemas import MyModelCreateSchema, MyModelUpdateSchema
my_model_manager = ModelManager[MyModel, MyModelCreateSchema, MyModelUpdateSchema](
MyModel, default_ordering=MyModel.title
)
Методы ModelManager¶
Ниже перечислены CRUD методы, предоставляемые ModelManager.
Документация параметров, принимаемых методами, находится в докстрингах методов.
create- создание объекта; выполняет валидацию значений полей на уровне БДget- получение объектаget_or_404- получение объекта или ошибки HTTP 404exists- проверка существования объектаpaginated_list/paginated_filter- получение списка объектов с фильтрами и пагинацией черезfastapi_paginationlist/filter- получение списка объектов с фильтрамиcount- получение количества объектовupdate- обновление объекта; выполняет валидацию значений полей на уровне БДdelete- удаление объекта
Использование методов paginated_list и paginated_filter, согласно документации
fastapi_pagination, требует применения fastapi_pagination.add_pagination
к приложению FastAPI, и использование fastapi_pagination.Page в типизации ответа
эндпоинта FastAPI.
Также доступны следующие методы для выполнения действий "пачкой":
bulk_create- создание объектов (частично выполняет валидацию на уровне БД)bulk_update- обновление объектов (не выполняет валидацию на уровне БД)bulk_delete- удаление объектов