python
config_error
ai_generated
true
pydantic.errors.PydanticUserError:字段 'tags' 需要默认值或 default_factory;Pydantic v2 不允许可变默认值。
pydantic.errors.PydanticUserError: Field 'tags' requires a default value or default_factory; mutable defaults are not allowed in Pydantic v2
ID: python/pydantic-nested-dict-default-mutable
80%修复率
89%置信度
0证据数
2024-02-08首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 2.x | active | — | — | — |
根因分析
字段直接使用了可变默认值(list、dict、set),Pydantic v2 为避免共享状态 bug 而拒绝此写法。
English
A mutable default (list, dict, set) was provided directly to a field, which Pydantic v2 rejects to avoid shared-state bugs.
解决方案
-
98% 成功率
from pydantic import BaseModel, Field class M(BaseModel): tags: list[str] = Field(default_factory=list) -
90% 成功率
class M(BaseModel): tags: list[str] = [] # Pydantic copies per-instance
无效尝试
常见但无效的做法:
-
70% 失败
Same mutable default problem; Pydantic raises at class definition.
-
50% 失败
Callers must handle None everywhere; downstream iteration crashes.
-
55% 失败
Bypasses Pydantic field metadata; model_dump and JSON schema lose the default.