Как перезаписать сообщение проверки питантической модели
Я хочу изменить сообщение проверки из класса модели pydantic, код для класса модели ниже:
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"
}
]
}
1 ответ
Решение
Это потому, что стандартная проверка не выполняется до вызова ваших валидаторов.
Все, что вам нужно сделать, это добавить pre=True
в ваш декоратор валидатора, например
@validator("ip", always=True, pre=True)