LINUX.ORG.RU

История изменений

Исправление masa, (текущая версия) :

По-моему, в твоем случае когда у тебя стабильная схема таблицы в бд, нужно описать в модели пидантика все поля как они есть в модели алхимии - проблема решена.

Если есть какие-то динамические поля, которые можно произвольно создавать и у тебя postgres можно хранить их в колонке user.extra_fields с типом jsonb прям в json и отдавать/сохранять его как есть.

class UserField(BaseModel):  # create and update
    id: Optional[int]
    name: str
    value: str

class User(BaseModel):
    id: Optional[int]
    login: str
    password: str
    description: Optional[str]
    fields: List[UserField]

Исходная версия masa, :

По-моему, в твоем случае когда у тебя стабильная схема таблицы в бд, нужно описать в модели пидантика все поля как они есть в модели алхимии - проблема решена.

Если есть какие-то динамические поля, которые можно произвольно создавать и у тебя postgres можно хранить их в колонке user.extra_fields с типом jsonb прям в json и отдавать/сохранять его как есть.

class UserFieldType(BaseModel):  # create and update
    id: Optional[int]
    name: str
    type: str

class User(BaseModel):
    id: Optional[int]
    login: str
    password: str
    description: Optional[str]
    fields: List[UserFieldType]