如何在编辑后验证 pydantic 对象
How to validate a pydantic object after editing it
在更改某些属性后是否有任何明显的验证 pydantic 模型的方法?
假设我创建了一个简单的模型和对象:
from pydantic import BaseModel
class A(BaseModel):
b: int = 0
a=A()
然后编辑一下,这样实际上是无效的:
a.b = "foobar"
我可以强制重新验证并期望引发 ValidationError
吗?
我试过了
A.validate(a) # no error
a.copy(update=dict(b='foobar')) # no error
起作用的是
A(**dict(a._iter()))
ValidationError: 1 validation error for A
b
value is not a valid integer (type=type_error.integer)
但这并不是很简单和我需要使用所谓的私有方法_iter
。
有干净的替代品吗?
pydantic 可以为您做到这一点,您只需要 validate_assignment
:
from pydantic import BaseModel
class A(BaseModel):
b: int = 0
class Config:
validate_assignment = True
在更改某些属性后是否有任何明显的验证 pydantic 模型的方法?
假设我创建了一个简单的模型和对象:
from pydantic import BaseModel
class A(BaseModel):
b: int = 0
a=A()
然后编辑一下,这样实际上是无效的:
a.b = "foobar"
我可以强制重新验证并期望引发 ValidationError
吗?
我试过了
A.validate(a) # no error
a.copy(update=dict(b='foobar')) # no error
起作用的是
A(**dict(a._iter()))
ValidationError: 1 validation error for A
b
value is not a valid integer (type=type_error.integer)
但这并不是很简单和我需要使用所谓的私有方法_iter
。
有干净的替代品吗?
pydantic 可以为您做到这一点,您只需要 validate_assignment
:
from pydantic import BaseModel
class A(BaseModel):
b: int = 0
class Config:
validate_assignment = True