Quiero cambiar el mensaje de validación de la clase de modelo pydantic, el código para la clase de modelo está a continuación:
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 vactualmente, no actualiza el mensaje escrito arriba. Estoy usando fastAPI para el desarrollo de API.
{ "detail": [ { "loc": [ "body", "input", "ip" ], "msg": "value is not a valid IPv4 or IPv6 address", "type": "value_error.ipvanyaddress" } ] }Esto se debe a que la validación estándar está fallando antes de que se llame a sus validadores.
Todo lo que necesita hacer es agregar pre=True a su decorador de validación, por ejemplo
@validator("ip", always=True, pre=True)