4

在更改某些属性后,是否有任何明显的验证 pydantic 模型?

假设我创建了一个简单的模型和对象:

from pydantic import BaseModel

class A(BaseModel):
    b: int = 0

a=A()

然后对其进行编辑,使其实际上无效:

a.b = "foobar"

我可以强制重新验证并期望ValidationError提高 a 吗?

我试过

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

有干净的替代品吗?

4

1 回答 1

5

pydantic 可以为您做到这一点,您只需要validate_assignment

from pydantic import BaseModel

class A(BaseModel):
    b: int = 0

    class Config:
        validate_assignment = True
于 2020-05-26T16:42:29.373 回答