Pydantic отдельная проверка схемы от логической/функциональной проверки ⇐ Python

Программы на Python
Anonymous
Pydantic отдельная проверка схемы от логической/функциональной проверки

Сообщение Anonymous »

Предположим, у меня есть эта модель:

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

class User(BaseModel):
name: str
email: EmailStr
phone_number: str
job_title: str
company: str
salary: int

@field_validator('company')
def valid_company(cls, company: str) -> str:
# validate that the company exists...
return company
Однако я хочу предоставить разработчику возможность проверять схему и логику отдельно.
Я думал об этом :

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

class User(BaseModel):
name: str
email: EmailStr
phone_number: str
job_title: str
company: str
salary: int

class UserValidator(User):
@field_validator('company')
def valid_company(cls, company: str) -> str:
# validate that the company exists...
return company
Таким образом, разработчик может использовать User vs UserValidator для проверки схемы и логики.
Однако модель User используется в других моделях также. Поэтому мне приходится переопределить некоторые поля для некоторых моделей, например:

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

class Account(BaseModel):
user: User
...

class AccountValidator(Account):
user: UserValidator

custom_validators...
Есть ли лучший способ сделать это? Может быть, даже использовать другую библиотеку?

Подробнее здесь: https://stackoverflow.com/questions/790 ... validation

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