如何覆盖 pydantic 模型验证消息
How to over-write the pydantic model's validation message
我想更改来自 pydantic 模型 class 的验证消息,模型 class 的代码如下:
class Input(BaseModel):
ip: IPvAnyAddress
@validator("ip", always=True)
def not_valid_ip(cls, v):
"""To validate ip-address."""
if str(v) == "":
raise ValueError(f'Invalid IP-Address:: {v}')
if not isinstance(v, IPvAnyAddress):
raise ValueError(f'Invalid IP format:: {v}')
return v
目前,它不会更新上面写的消息。我正在使用 fastAPI 进行 API 开发。
{
"detail": [
{
"loc": [
"body",
"input",
"ip"
],
"msg": "value is not a valid IPv4 or IPv6 address",
"type": "value_error.ipvanyaddress"
}
]
}
那是因为标准验证在您的验证器被调用之前失败了。
您需要做的就是将 pre=True
添加到您的验证器装饰器中,例如
@validator("ip", always=True, pre=True)
我想更改来自 pydantic 模型 class 的验证消息,模型 class 的代码如下:
class Input(BaseModel):
ip: IPvAnyAddress
@validator("ip", always=True)
def not_valid_ip(cls, v):
"""To validate ip-address."""
if str(v) == "":
raise ValueError(f'Invalid IP-Address:: {v}')
if not isinstance(v, IPvAnyAddress):
raise ValueError(f'Invalid IP format:: {v}')
return v
目前,它不会更新上面写的消息。我正在使用 fastAPI 进行 API 开发。
{
"detail": [
{
"loc": [
"body",
"input",
"ip"
],
"msg": "value is not a valid IPv4 or IPv6 address",
"type": "value_error.ipvanyaddress"
}
]
}
那是因为标准验证在您的验证器被调用之前失败了。
您需要做的就是将 pre=True
添加到您的验证器装饰器中,例如
@validator("ip", always=True, pre=True)