尝试使用动态枚举的Pydantic创建Jsonschem
我正在尝试基于Pydantic类创建JSON模式。此类包含枚举字段,这是一代我从外部API中恢复了枚举选项。
这是我到目前为止所做的:
class Language(BaseModel):
language_audio: Optional[EnumMeta] = None
language_booklet: Optional[EnumMeta] = None
language_live: Optional[EnumMeta] = None
@root_validator(pre=True)
@classmethod
def check_only_one_language_selected(cls, values):
if len(values) > 1:
raise ValueError("Select only one language option")
elif len(values) == 0:
raise ValueError("Select language option")
return values
class GetYourGuideCustomerInfo(BaseModel):
"""Class for customer info validation"""
language: Optional[Language] = None
hotel: Optional[str] = None
supplier_requested_question: Optional[str] = None
def get_GetYourGuideCustomerInfo(lang_enum_dict: Dict[str, Any]) -> GetYourGuideCustomerInfo:
return GetYourGuideCustomerInfo(language=Language(**lang_enum_dict))
我生成类的代码:
schema = json.loads(get_GetYourGuideCustomerInfo(enum_dict).schema_json())
错误的错误:
json模式不可声明的值 type =可选[enummeta]必需= false default = none
高级中的none thanx
I am trying to create json schema based on pydantic class this class contains enums fields which is dynemic i recive the enums options from external api.
this what i did so far:
class Language(BaseModel):
language_audio: Optional[EnumMeta] = None
language_booklet: Optional[EnumMeta] = None
language_live: Optional[EnumMeta] = None
@root_validator(pre=True)
@classmethod
def check_only_one_language_selected(cls, values):
if len(values) > 1:
raise ValueError("Select only one language option")
elif len(values) == 0:
raise ValueError("Select language option")
return values
class GetYourGuideCustomerInfo(BaseModel):
"""Class for customer info validation"""
language: Optional[Language] = None
hotel: Optional[str] = None
supplier_requested_question: Optional[str] = None
def get_GetYourGuideCustomerInfo(lang_enum_dict: Dict[str, Any]) -> GetYourGuideCustomerInfo:
return GetYourGuideCustomerInfo(language=Language(**lang_enum_dict))
the code where i generate the class:
schema = json.loads(get_GetYourGuideCustomerInfo(enum_dict).schema_json())
the error recived:
Value not declarable with JSON Schema, field: name='language_audio'
type=Optional[EnumMeta] required=False default=None
thanx in advanced
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以在GitHub上参考此问题:
https://github.com/samuelcolvin/pydantic/issues/issues/4079
建议控制直接的模式:
You can refer to this issue on Github:
https://github.com/samuelcolvin/pydantic/issues/4079
Suggests controlling the schema directly like this: