Как проверить объект pydanti c после его редактирования - PullRequest
0 голосов
/ 26 мая 2020

Есть ли что-нибудь очевидное для проверки модели pydanti c после некоторого изменения какого-либо атрибута?

Скажем, я создаю простую модель и объект:

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.

Есть чистая альтернатива?

1 Ответ

1 голос
/ 26 мая 2020

pydanti c может сделать это за вас, вам просто нужно validate_assignment:

from pydantic import BaseModel

class A(BaseModel):
    b: int = 0

    class Config:
        validate_assignment = True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...