簡體   English   中英

Pydantic model 無法使用可重現代碼驗證分配

[英]Pydantic model does not validate on assignment with reproducable code

將不正確的屬性分配給 Pydantic model 字段時,不會發生驗證錯誤。

from pydantic import BaseModel

class pyUser(BaseModel):
    username: str

    class Config:
        validate_all = True
        validate_assignment = True

person = pyUser(username=1234)
person.username
>>>1234
try_again = pyUser()

pydantic.error_wrappers.ValidationError:
[ErrorWrapper(exc=MissingError(), loc=('username',))]
<class '__main__.pyUser'>

如何讓 pydantic 驗證分配?

根據文檔,這是預期的行為:

str

字符串按原樣接受, intfloatDecimal使用str(v)強制

您可以使用StrictStrStrictIntStrictFloatStrictBool類型來防止來自兼容類型的強制。

from pydantic import BaseModel, StrictStr


class pyUser(BaseModel):
    username: StrictStr

    class Config:
        validate_all = True
        validate_assignment = True


person = pyUser(username=1234)  # ValidationError `str type expected`
print(person.username)

暫無
暫無

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

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