class Foo(BaseModel):
a: str
b: str
@validator('a')
def a_valid(cls, v, values):
print(values)
return v
Foo(a='a', b='b')
# prints '{}'
当我尝试访问模型中的其他值时,我得到一个空字典。我期待a dict containing the name-to-value mapping of any previously-validated fields
也许我没有理解previously-validated fields
是什么意思
字段按照在您的模型中定义的顺序进行处理。验证a
时,b
尚未设置。如果您需要访问其他字段,您可能需要root_validator
:
from pydantic import BaseModel, root_validator
class Foo(BaseModel):
a: str
b: str
@root_validator
def a_valid(cls, values):
print(values)
return values
Foo(a="a", b="b")
# prints '{'a': 'a', 'b': 'b'}'
或者,您可以更改模式中字段的顺序:
from pydantic import BaseModel, validator
class Foo(BaseModel):
b: str
a: str
@validator("a")
def a_valid(cls, v, values):
print(values)
return values
Foo(a="a", b="b")
# prints '{'b': 'b'}'