pydantic学习与使用-7.字段顺序field-ordering
前言
字段顺序在模型中很重要,原因如下:
- 在定义的顺序字段中执行验证;字段验证器 可以访问较早字段的值,但不能访问较晚字段的值
- 字段顺序保留在模型模式中
- 字段顺序保留在验证错误中
- 字段顺序由dict()和json()等保存。
字段顺序 field-ordering
从v1.0开始,所有带有注释的字段(无论是仅注释还是带有默认值)都将位于所有没有注释的字段之前。在它们各自的组中,字段保持它们定义的顺序。
from pydantic import BaseModel, ValidationError
class Model(BaseModel):
a: int
b = 2
c: int = 1
d = 0
e: float
print(Model.__fields__.keys())
#> dict_keys(['a', 'c', 'e', 'b', 'd'])
于是可以看到a,c,e 注释的字段,在没有注释的字段b和d之前。
m = Model(e=2, a=1)
print(m.dict())
#> {'a': 1, 'c': 1, 'e': 2.0, 'b': 2, 'd': 0}
实例化后也是按字段顺序打印对应的dict格式
校验失败的时候,报错字段顺序也是按字段顺序
try:
Model(a='x', b='x', c='x', d='x', e='x')
except ValidationError as e:
error_locations = [e['loc'] for e in e.errors()]
print(error_locations)
#> [('a',), ('c',), ('e',), ('b',), ('d',)]
标签:
pydantic
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-02-21 httprunner学习26-cookies关联(403 Forbidden问题解决)
2017-02-21 Selenium2+python自动化29-js处理多窗口