如何为Pydantic动态创建的模型添加description属性?
如何给Pydantic动态创建的模型添加JSON Schema描述
给动态模型本身添加description
使用create_model时,直接通过__doc__参数传入模型的文档字符串,就能让生成的JSON Schema带上对应的description属性。
示例代码:
from pydantic import create_model # 动态创建模型并添加描述 Company = create_model( "Company", __doc__="公司信息模型,用于存储企业基本数据", name=(str, ...), employee_count=(int, 0) ) # 查看生成的JSON Schema print(Company.model_json_schema())
生成的Schema中会包含:
{ "title": "Company", "description": "公司信息模型,用于存储企业基本数据", "type": "object", "properties": { "name": {"type": "string"}, "employee_count": {"type": "integer", "default": 0} }, "required": ["name"] }
给动态模型的字段添加description
如果要给单个字段加描述,需要用Field对象定义字段,而不是直接传类型或默认值。
示例代码:
from pydantic import create_model, Field from enum import Enum class account_kind(str, Enum): """Account kind enum.""" regular = "r" premium = "p" # 定义带描述的字段属性 company_attributes = { "name": (str, Field(..., description="公司全称")), "employee_count": (int, Field(0, description="员工总数,默认值为0")), "account_type": (account_kind, Field(..., description="账户类型,普通或高级")) } # 动态创建模型,同时给模型本身加描述 Company = create_model( "Company", __doc__="公司信息模型", **company_attributes ) # 查看字段的描述 print(Company.model_json_schema()["properties"]["name"]["description"]) # 输出:公司全称
这样生成的JSON Schema里,每个字段都会带有对应的description属性,和类定义方式的效果完全一致。
总结
- 模型级描述:通过
create_model的__doc__参数传入文档字符串 - 字段级描述:用
Field(..., description="xxx")定义字段的约束和描述
内容的提问来源于stack exchange,提问作者PChemGuy
相关产品推荐
相关产品推荐

