python type_error ai_generated true

pydantic_core._pydantic_core.ValidationError: Order 模型验证错误:items 字段应为列表类型

pydantic_core._pydantic_core.ValidationError: 1 validation error for Order items Input should be a valid list [type=list_type, input_value='item1,item2', input_type=str]

ID: python/pydantic-validation-error-list-type

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

版本兼容性

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

根因分析

向列表类型字段传入了逗号分隔的字符串。Pydantic v2 不会自动将字符串拆分为列表。

English

A comma-separated string was passed to a list-typed field. Pydantic v2 does not split strings into lists automatically.

generic

解决方案

  1. 96% 成功率
    data['items'] = 'item1,item2'.split(',')
  2. 94% 成功率
    from pydantic import BaseModel, field_validator
    
    class Order(BaseModel):
        items: list[str]
    
        @field_validator('items', mode='before')
        @classmethod
        def split_items(cls, v):
            if isinstance(v, str):
                return v.split(',')
            return v

无效尝试

常见但无效的做法:

  1. 98% 失败

    list() on a string iterates characters, producing ['i','t','e','m','1',',',...].

  2. 99% 失败

    Security risk and fails because 'item1,item2' is not valid Python syntax for a list.