Alo*_*nme 5 python validation pydantic
Pydantic 文档有一个重用验证器的示例: https:
//pydantic-docs.helpmanual.io/usage/validators/#reuse-validators
是否可以重用根验证器?
Alo*_*nme 10
是的,这是可能的,并且 API 非常相似
例子:
from datetime import datetime
from pydantic import BaseModel, validator
from pydantic.class_validators import root_validator
def validate_start_time_before_end_time(cls, values):
"""
Reusable validator for pydantic models
"""
if values["start_time"] >= values["end_time"]:
raise ValueError("start_time must be before end_time")
return values
class Model1(BaseModel):
start_time: datetime
end_time: datetime
# validators
_datetime_order_validation = root_validator(allow_reuse=True)(
validate_start_time_before_end_time
)
class Model2(BaseModel):
start_time: datetime
end_time: datetime
# validators
_datetime_order_validation = root_validator(allow_reuse=True)(
validate_start_time_before_end_time
)
Run Code Online (Sandbox Code Playgroud)
也可以像本例中那样参数化验证器https://github.com/samuelcolvin/pydantic/discussions/2938
| 归档时间: |
|
| 查看次数: |
9499 次 |
| 最近记录: |