from pydantic import BaseModel from .base import Base, IP4, to_alias __all__ = ('UserModel',) class Preset(BaseModel): ip: IP4 os: str ttt: str = None def dict(self, **kwargs): res = super().dict(**kwargs) return {'#' + k: v for k, v in res.items() if v is not None} class Config: alias_generator = to_alias class UserModel(Base): preset: Preset def dict(self, **kwargs): kwargs.setdefault('exclude', {'preset'}) self.properties.update(self.preset.dict(**kwargs)) return super().dict(**kwargs)