【问题标题】:add 'description' to Pydantic schema when using pydantic.dataclasses使用 pydantic.dataclasses 时向 Pydantic 模式添加“描述”
【发布时间】:2021-02-17 12:25:15
【问题描述】:

Pydantic 支持生成 OpenApi/jsonschema 模式。当使用 Pydantic 的 BaseModel 定义模型时,可以将 descriptiontitle 添加到生成的 json/yaml 规范中。

class DescriptionFromBasemodel(BaseModel):
    with_desc: int = Field(
        42,
        title='my title',
        description='descr text',)

这会转移到架构中:DescriptionFromBasemodel.schema_json()

{
    ... schema title, description, type top-level ...
    "properties": {
        "with_desc": {
            "title": "my title",
            "description": "descr text",
            "type": ...
       ...

但是,我无法确定如何使用pydantic.dataclasses 来检测它,我的应用程序必须使用它才能在其他地方很好地播放。您可以将 metadata 添加到 stdlib dataclass Field(...)s,但 pydantic 不使用它们(?)

from pydantic.dataclasses import dataclass
from dataclasses import field

@dataclass
class DataclassWithDescription:
   a_field: int = field(metadata=dict(
       description="descr text"))

并且没有使用DataclassWithDescription.__pydantic_model__.schema_json() 生成输出description

【问题讨论】:

    标签: python-3.x swagger openapi pydantic


    【解决方案1】:

    我发现这很有效(注意 Pydantic's Field 的用法),

    from pydantic import Field
    from pydantic.dataclasses import dataclass
    
    @dataclass
    class DataclassWithDescription:
       a_field: int = Field(description="descr text")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-21
      • 2016-04-14
      • 1970-01-01
      • 1970-01-01
      • 2011-06-03
      相关资源
      最近更新 更多