python
runtime_error
ai_generated
true
PydanticDeprecatedSince20: `__fields__` 已弃用,请改用 `model_fields`
PydanticDeprecatedSince20: `__fields__` is deprecated; use `model_fields` instead. Deprecated in Pydantic V2.0 to be removed in V3.0.
ID: python/pydantic-v2-model-fields-deprecated
80%修复率
86%置信度
0证据数
2024-01-20首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 2.x | active | — | — | — |
根因分析
为 Pydantic v1 编写的代码访问 model.__fields__ 或 .dict()/.json(),这些在 v2 中已弃用,应改用 model_fields、model_dump()、model_dump_json()。
English
Code written for Pydantic v1 accesses model.__fields__ or .dict()/.json() which are deprecated in v2 in favor of model_fields, model_dump(), model_dump_json().
解决方案
-
95% 成功率
Replace attribute access: # v1 for name, field in User.__fields__.items(): ... # v2 for name, field in User.model_fields.items(): ...
-
95% 成功率
Replace serialization methods: obj.dict() -> obj.model_dump() obj.json() -> obj.model_dump_json() obj.parse_obj(d) -> obj.model_validate(d)
无效尝试
常见但无效的做法:
-
65% 失败
Hides the deprecation but the code still breaks when upgrading to v3 or when stderr is treated as failure in CI.
-
75% 失败
Conflicts with libraries (FastAPI 0.100+, LangChain) that require v2, causing install errors.