背景
有些情况下,我们模型中的字段名称和外部数据的 JSON 中并不一致。这时候需要做 alias 转换。
方式和优先级
Alias 转换的方式主要有 3 种:
- Set via
Field(..., alias=<alias>)
; - Defined in
Config.fields
; - Generated by
alias_generator
;
考虑到 alias 也可能在 parent model 中定义,规则的优先级如下:
- Set via
Field(..., alias=<alias>)
, directly on the model- Defined in
Config.fields
, directly on the model- Set via
Field(..., alias=<alias>)
, on a parent model- Defined in
Config.fields
, on a parent model- Generated by
alias_generator
, regardless of whether it’s on the model or a parent
转换示例
在声明了 alias fields 后,只需要直接使用数据进行 model 初始化,即可完成转换。
但是需要注意的是,在声明了 alias 后,model 只识别 alias fields。
1 | from pydantic import BaseModel, Field |
Model 在转换为数据(字典或者 JSON 字符串)时默认时不会转换 alias fields 的,需要显示地声明 alias 转换。
1 |
|