有没有办法在不使用 的情况下使用多个字段别名root_validator?
我当前的代码是这样的:
class GetInfo(BaseModel):
name: str = Field(alias='name1')
name2: str = Field(alias='name2')
@root_validator
def format_name(cls, values):
if values['name'] is None:
if values['name2'] is not None:
values['name'] = values['name2']
return values
return None
Run Code Online (Sandbox Code Playgroud)
该name1字段有时为空,而该name2字段大部分不为空。如果确实为空
,我想使用该值。name2name1
或者你能建议比我更好的方法吗?
简短的回答,您目前只能使用一个别名。(换句话说,您的字段可以有 2 个“名称”。)如果您需要其他别名,那么您将需要采用您的解决方法。
Pydantic V2 引入了“更强大的别名”:
class GetInfo(BaseModel):
name: str = Field(validation_alias=AliasChoices('name1', 'name_1', 'name_one'))
name2: str = Field(validation_alias=AliasChoices('name2', 'name_2', 'name_two'))
# The following will all be equal
assert all((
GetInfo(name1="Sam", name2="Colvin"),
GetInfo(name_1="Sam", name_2="Colvin"),
GetInfo(name_one="Sam", name_two="Colvin"),
))
Run Code Online (Sandbox Code Playgroud)