首页 > 解决方案 > Pydantic 中嵌套和继承模型的字段自定义

问题描述

我已经彻底搜索了这个查询的答案,但收效甚微。

使用 pydantic,以下示例中的ge=0验证item_main会顺利进行(根据说明:https ://pydantic-docs.helpmanual.io/usage/schema/#field-customisation ):

class SubCls(BaseModel):
    item_sub: float = Field(...)

class MainCls(BaseModel):
    item_main1: float = Field(...)
    item_main2: SubCls

    class Config:
        fields = {'item_main1': {'ge': 0}}

但是,以下示例中ge=0的嵌套验证item_sub不起作用:

class SubCls(BaseModel):
    item_sub: float = Field(...)

class MainCls(BaseModel):
    item_main1: float = Field(...)
    item_main2: SubCls

    class Config:
        fields = {'item_main2': {"item_sub":{'ge': 0}}}

SubCl被继承时也不会MainCls

class SubCls(BaseModel):
    item_sub: float = Field(...)

class MainCls(SubCls):
    item_main1: float = Field(...)

    class Config:
        fields = {"item_sub":{'ge': 0}}

我想知道如何最好地将字段自定义应用于嵌套模型。当然,最优雅的方法是创建一个新SubCls模型,并添加验证信息,但在我的用例中,这会导致模型数量过多。我会很感激任何帮助。

此查询已在 pydantic 的 github 论坛上交叉发布:https ://github.com/samuelcolvin/pydantic/discussions/3400 。

标签: pythonvalidationpython-typingpydanticpython-dataclasses

解决方案


推荐阅读