python type_error ai_generated true

pydantic.errors.PydanticSchemaGenerationError: 无法为 <class 'decimal.Decimal'> 生成 pydantic-core schema。请在 model_config 中设置 `arbitrary_types_allowed=True` 以忽略此错误,或实现 `__get_pydantic_core_schema__`。

pydantic.errors.PydanticSchemaGenerationError: Unable to generate pydantic-core schema for <class 'decimal.Decimal'>. Set `arbitrary_types_allowed=True` in the model_config to ignore this error or implement `__get_pydantic_core_schema__` on your type to fully support it.

ID: python/pydantic-arbitrary-types-not-allowed

其他格式: JSON · Markdown 中文 · English
80%修复率
88%置信度
0证据数
2024-06-20首次发现

版本兼容性

版本状态引入弃用备注
2.x active — — —

根因分析

字段使用了 Pydantic 无法内省的类型(自定义类或缺少 schema 钩子的第三方类型),且未启用 `arbitrary_types_allowed`。

English

A field uses a class Pydantic cannot introspect (a custom class or third-party type lacking a schema hook), and `arbitrary_types_allowed` is not enabled.

generic

解决方案

  1. 90% 成功率
    Enable it: `model_config = ConfigDict(arbitrary_types_allowed=True)` and add a `field_validator` for the type.
  2. 85% 成功率
    Implement `__get_pydantic_core_schema__` on the custom class to provide a proper schema.

无效尝试

常见但无效的做法:

  1. 50% 失败

    Adding `arbitrary_types_allowed=True` without `isinstance` checks means the field is never validated, leading to silent bad data.

  2. 85% 失败

    Subclassing the third-party type does not help; Pydantic still cannot introspect it.