Как настроить сообщения об ошибках ошибки проверки Pydantic, чтобы исключить префикс «Ошибка значения»?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как настроить сообщения об ошибках ошибки проверки Pydantic, чтобы исключить префикс «Ошибка значения»?

Сообщение Anonymous »

Приведенный ниже код состоит из модели компании, и я установил проверку для чистого названия компании. Я рассматриваю возможность поднять пользовательское сообщение об ошибке проверки, но в сообщении об ошибке есть ошибка значения префикса, , которую я не хочу. Как я могу избавиться от этого?

Код: Выделить всё

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": "[email protected]",
"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'])
< /code>
output: < /p>
❌ Value error, Company name must be provided.
< /code>
желаемый вывод: < /p>
❌ Company name must be provided.
Полное сообщение об ошибке, созданное 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'
}
]
Примечание: Я знаю обходные пути, используя str.replace () или подняв пользовательское исключение вместо valueError . Мы можем сделать что -нибудь еще?


Подробнее здесь: https://stackoverflow.com/questions/796 ... -error-pre
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»