[Python] How to customize Pydantic validation error messages to exclude "Value error" prefix?

Discussão em 'Python' iniciado por Stack, Junho 5, 2025.

  1. Stack

    Stack Membro Participativo

    The below code consists of a company model and I have put up a validation for a blank company name. I am considering raising a custom validation error message but the error message has the prefix Value error, which I do not want. How can I get rid of it?

    Python Code:

    from datetime import date
    from typing import Optional

    from pydantic import (
    BaseModel,
    field_validator,
    HttpUrl,
    EmailStr
    )
    from pydantic import ValidationError


    class Company(BaseModel):
    company_id: Optional[int] = None
    company_name: Optional[str]
    address: Optional[str]
    state: Optional[str]
    country: Optional[str]
    postal_code: Optional[str]
    phone_number: Optional[str]
    email: Optional[EmailStr] = None
    website_url: Optional[HttpUrl] = None
    cin: Optional[str]
    gst_in: Optional[str] = None
    incorporation_date: Optional[date]
    reporting_currency: Optional[str]
    fy_start_date: Optional[date]
    logo: Optional[str] = None

    @field_validator('company_name')
    def validate_company_name(cls, v):
    if v is None or not v.strip():
    raise ValueError("Company name must be provided.") # Custom Error Message
    return v

    payload = {
    "company_name": None,
    "address": "DLH Park, Mumbai",
    "state": "Maharashtra",
    "country": "India",
    "postal_code": "400066",
    "phone_number": "+9122380199",
    "email": "info@mailto.com",
    "cin": "U45678TX2023PTC111222",
    "incorporation_date": "2015-07-20",
    "reporting_currency": "INR",
    "fy_start_date": "2010-04-01"
    }

    try:
    company = Company(**payload)
    print("✅ Valid payload:", company.model_dump())
    except ValidationError as e:
    print("❌", e.errors()[0]['msg'])


    Output:

    ❌ Value error, Company name must be provided.


    Desired Output:

    ❌ Company name must be provided.


    Complete error message produced by pydantic validation:

    [
    {
    'type': 'value_error',
    'loc': ('company_name',),
    'msg': 'Value error, Company name must be provided.',
    'input': None,
    'ctx': {
    'error': ValueError('Company name must be provided.')
    },
    'url': 'https://errors.pydantic.dev/2.10/v/value_error'
    }
    ]


    Note: I know the workarounds by using str.replace() or raising a custom exception instead of ValueError. Can we do something else?

    Continue reading...

Compartilhe esta Página