Можно ли использовать Pydantic BaseModel orm_mode для получения данных из класса gui

Можно ли использовать класс модели, унаследованный от Pydantic.BaseModel, для получения данных из класса GUI, установив orm_mode = true, как это используется с базами данных

from typing import List
from sqlalchemy import Column, Integer, String
from sqlalchemy.dialects.postgresql import ARRAY
from sqlalchemy.ext.declarative import declarative_base
from pydantic import BaseModel, constr

Base = declarative_base()


class CompanyOrm(Base):
    __tablename__ = 'companies'
    id = Column(Integer, primary_key=True, nullable=False)
    public_key = Column(String(20), index=True, nullable=False, unique=True)
    name = Column(String(63), unique=True)
    domains = Column(ARRAY(String(255)))


class CompanyModel(BaseModel):
    id: int
    public_key: constr(max_length=20)
    name: constr(max_length=63)
    domains: List[constr(max_length=255)]

    class Config:
        orm_mode = True

'' '' Если это возможно, как я могу это сделать?


person hamza chenni    schedule 28.01.2021    source источник
comment
С какой проблемой вы столкнулись? Что это возможно, я показал на примере обычного класса ниже.   -  person alex_noname    schedule 01.02.2021


Ответы (1)


Предполагается, что ORM mode поддерживает произвольные классы, а не только ORM баз данных (он назван так, потому что обычно используется вместе с ним). Более подробную информацию можно найти здесь.

Пример с обычным классом:

from pydantic import BaseModel


class SomeClass:
    def __init__(self):
        self.id = 100
        self.name = "some_name"


class SomeModel(BaseModel):
    id: int
    name: str

    class Config:
        orm_mode = True


print(SomeModel.from_orm(SomeClass()))  # id=100 name='some_name'
person alex_noname    schedule 28.01.2021