You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 16:15:41