python type_error ai_generated true

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

Also available as: JSON · Markdown · 中文
80%Fix Rate
88%Confidence
0Evidence
2024-05-27First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
2.x active — — —

Root Cause

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

generic

中文

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

Workarounds

  1. 96% success
    data['items'] = 'item1,item2'.split(',')
  2. 94% success
    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

Dead Ends

Common approaches that don't work:

  1. 98% fail

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

  2. 99% fail

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