• pydantic学习与使用7.字段顺序fieldordering 上海


    前言

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

    • 在定义的顺序字段中执行验证;字段验证器 可以访问较早字段的值,但不能访问较晚字段的值
    • 字段顺序保留在模型模式中
    • 字段顺序保留在验证错误中
    • 字段顺序由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',)]
    
  • 相关阅读:
    判断是否是唯一索引异常
    Sign in with Apple java
    spring 集成钉钉机器人
    list一个字段去重
    Math_Linear_algebra_05_正定矩阵
    Math_Linear_algebra_02_矩阵与线性方程
    Math_Calculus_04_多变量微积分
    Math_Linear_algebra_01_向量空间
    Linux_Best Practice_04_Ubuntu 18.04
    PMP_Previw
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/15921139.html
Copyright © 2020-2023  润新知