我将 pydanticBaseModel
与这样的验证器一起使用:
from datetime import date
from typing import List, Optional
from pydantic import BaseModel, BaseConfig, validator
class Model(BaseModel):
class Config(BaseConfig):
allow_population_by_alias = True
fields = {
"some_date": {
"alias": "some_list"
}
}
some_date: Optional[date]
some_list: List[date]
@validator("some_date", pre=True, always=True)
def validate_date(cls, value):
if len(value) < 2: # here value is some_list
return None
return value[0] # return the first value - let's assume it's a date string
# This reproduces the problem
m = Model(some_list=['2019-01-03'])
我想some_date
根据 的值计算 的值,some_list
并在None
满足某个条件时进行计算。
我的 JSON 从不包含该字段some_date
,它始终基于some_list
因此填充pre=True, always=True
。但是,默认验证器some_date
将在validate_date
我的自定义验证器之后运行,如果返回,它将失败None
。
有没有办法创建这样一个只能由另一个计算并且仍然可以的字段Optional
?