【问题标题】:Required field with sensible default具有合理默认值的必填字段
【发布时间】:2020-01-15 13:18:20
【问题描述】:

考虑以下

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

这将使required 成为Model 的必填字段,但是,在 FastAPI 自动生成的 Swagger 文档中,它将具有“字符串”的示例值。

如何使用合理的默认值设置必填字段?如果我制作这样的模型

from pydantic import BaseModel, Field
class Model(BaseModel):
    required: str = 'Sensible default'

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

【问题讨论】:

    标签: python fastapi pydantic


    【解决方案1】:

    您可以使用 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() 可以验证许多不同的参数。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-09
        • 2011-02-13
        • 1970-01-01
        • 1970-01-01
        • 2014-07-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多