如何修改Pydantic __root__字段在FastAPI Redoc中的默认示例值
解决方法
要修改Redoc中__root__字段的默认示例,你需要直接为Dict类型的__root__指定自定义示例值,而不是仅修改别名或标题。以下是两种可行方案:
方案一:通过Field指定示例
直接在__root__字段的Field参数中传入example,定义你想要的键值对结构:
from pydantic import BaseModel, Field from typing import Dict # 假设你的Test模型结构如下 class Test(BaseModel): name: str value: int class Table(BaseModel): __root__: Dict[int, Test] = Field( example={ 1: {"name": "测试项1", "value": 100}, 2: {"name": "测试项2", "value": 200} }, description="以数字ID为键的Test对象集合" )
如果希望示例中的键显示为id_1、id_2这类字符串形式,只需将Dict的键类型改为str:
class Table(BaseModel): __root__: Dict[str, Test] = Field( example={ "id_1": {"name": "测试项1", "value": 100}, "id_2": {"name": "测试项2", "value": 200} } )
方案二:通过模型Config的schema_extra定义示例
在Table模型的内部Config类中设置schema_extra,同样可以覆盖默认示例:
from pydantic import BaseModel from typing import Dict class Test(BaseModel): name: str value: int class Table(BaseModel): __root__: Dict[int, Test] class Config: schema_extra = { "example": { 1: {"name": "测试项1", "value": 100}, 2: {"name": "测试项2", "value": 200} } }
为什么之前的方法无效?
你之前尝试的Field别名和标题,仅用于修改字段自身的显示名称和描述,无法覆盖Pydantic为Dict类型自动生成的默认示例占位符(property1、property2)。只有直接指定示例值,才能让Redoc展示你自定义的结构。
内容的提问来源于stack exchange,提问作者DeadSec
相关产品推荐
相关产品推荐

