Вопрос: Как я могу получить типизированный «дамп» из модели Pydantic?
Мой контекст:
У нас есть .model_dump(), но его подсказка типа возвращаемого значения — dict[str, Any]. Это раздражает, потому что я хочу написать серверную часть FastAPI с моделями SQLAlchemy ORM и Pydantic. При создании модели ORM у нас есть только один вариант (я думаю) создать экземпляр — вызвать конструктор с помощью kwargs. Допустим, User — это модель SQLAlchemy (декларативная база), мы создаем такую:
Код: Выделить всё
User(name="John")Код: Выделить всё
user = UserCreate(name="John")
User(**user.model_dump())
Итак, если я добавлю новое поле в мою модель SQLAlchemy, например:
Код: Выделить всё
from sqlalchemy.orm import MappedAsDataclass, DeclarativeBase
class BaseDBModel(MappedAsDataclass, DeclarativeBase):
pass
class User(BaseDBModel):
__tablename__ = "users"
id: Mapped[int] = mapped_column(primary_key=True, init=False)
name: Mapped[str] = mapped_column()
age: Mapped[int] = mapped_column()
Код: Выделить всё
from pydantic import BaseModel
class UserCreate(BaseModel):
name: str
Код: Выделить всё
user = UserCreate(name="John")
User(**user.model_dump())
SQLAlchemy версии 2.0.23
Pydantic версии 2.5
Мобильная версия