ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pydantic学习与使用-7.字段顺序field-ordering

2022-02-21 23:00:43  阅读:234  来源: 互联网

标签:顺序 ordering 注释 field 字段 dict print Model pydantic


前言

字段顺序在模型中很重要,原因如下:

  • 在定义的顺序字段中执行验证;字段验证器 可以访问较早字段的值,但不能访问较晚字段的值
  • 字段顺序保留在模型模式中
  • 字段顺序保留在验证错误中
  • 字段顺序由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',)]

标签:顺序,ordering,注释,field,字段,dict,print,Model,pydantic
来源: https://www.cnblogs.com/yoyoketang/p/15921139.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有