Как перезаписать сообщение проверки модели pydanti c - PullRequest
0 голосов
/ 20 июня 2020

Я хочу изменить сообщение проверки от pydanti c модельный класс, код для модельного класса ниже:

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 Ответ

1 голос
/ 20 июня 2020

Это потому, что стандартная проверка не выполняется до вызова ваших валидаторов.

Все, что вам нужно сделать, это добавить pre=True в ваш декоратор валидатора, например

@validator("ip", always=True, pre=True)
...