有两个类似的pydantic对象。唯一的区别是一些字段是可选的。我如何在一个对象中定义字段并扩展到另一个对象中?
class ProjectCreateObject(BaseModel):
project_id: str
project_name: str
project_type: ProjectTypeEnum
depot: str
system: str
...
class ProjectPatchObject(ProjectCreateObject):
project_id: str
project_name: Optional[str]
project_type: Optional[ProjectTypeEnum]
depot: Optional[str]
system: Optional[str]
...
3条答案
按热度按时间qlckcl4x1#
我找到了一个很好的简单的方法,通过
__init__subclass__
。文档也可以成功地生成。ljsrvy3e2#
你自己差不多已经回答了。除非还有别的问题。
运行此命令可得到:
另一种方法是将base定义为可选的,然后创建一个验证器来检查是否需要:
b91juud33#
或者像下面这样使用元类:Make every fields as optional with Pydantic
在你的例子中...