【问题标题】:How to over-write the pydantic model's validation message如何覆盖 pydantic 模型的验证消息
【发布时间】:2020-06-20 13:22:53
【问题描述】:

我想更改 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"
        }
    ]
}

【问题讨论】:

    标签: fastapi pydantic


    【解决方案1】:

    这是因为在调用验证器之前标准验证失败。

    您需要做的就是将pre=True 添加到您的验证器装饰器中,例如

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

    【讨论】:

    • 你能告诉我在请求正文中没有传递 IP 时如何覆盖默认消息吗?截至目前,它只显示“必填字段”。
    猜你喜欢
    • 1970-01-01
    • 2012-12-13
    • 2018-01-31
    • 1970-01-01
    • 2020-01-17
    • 2018-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多