具有合理默认值的必填字段

Required field with sensible default

考虑以下因素

from pydantic import BaseModel, Field
class Model(BaseModel):
    required: str

这将使 required 成为 Model 的必填字段,但是,在 FastAPI 自动生成的 Swagger 文档中,它的示例值为 "string"。

如何使必填字段具有合理的默认值?如果我做一个像

这样的模型
from pydantic import BaseModel, Field
class Model(BaseModel):
    required: str = 'Sensible default'

然后字段 required 不再是必需的,但它在文档中显示为合理的默认值。有没有简单的解决方法?

我没有研究 为什么 FastAPI 附带的 openapi 版本中的(pydantic)模型表示没有星号,但该字段是 definitely 仍然需要(尝试输入空值或字符串以外的任何值)。这可能只是 UI 不一致。

您可以使用 Field() 来设置这些选项并检查。

from pydantic import BaseModel, Field
class Model(BaseModel):
    something: str # required, shows "string"
    something: str = None # not required, shows "string"
    something: str = Field(..., example="this is the default display") # required, shows example
    something: str = Field(None, example="Foobar") #not required, show example

Field() 可以验证多种不同的参数。