簡體   English   中英

如何在編輯后驗證 pydantic object

[英]How to validate a pydantic object after editing it

在更改某些屬性后,是否有任何明顯的證據可以驗證 pydantic model?

假設我創建了一個簡單的 Model 和 object:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM