【问题标题】:Validating Pydantic field while setting value在设置值时验证 Pydantic 字段
【发布时间】:2020-10-24 04:54:28
【问题描述】:

如果为它提供的值超出指定范围,则无法初始化具有 confloat 字段的 Pydantic 类。但是在稍后阶段(my_object.constrained_field = <big_value>)设置此字段时,不会验证新值。

from pydantic import BaseModel, confloat

class testClass(BaseModel):
    a: confloat(gt=0.0, lt=10.0)

x = testClass(a=2.0) # OK

# x = testClass(a=20.0) # ERROR: outside limits

x.a = 40.0 # OK despite outside limits

print(x.a) # prints '40.0'

是否可以在设置成员时验证新值,以便在上面的示例中调用x.a = 40.0 会引发异常?

如果没有 - 是否有任何解决方法,例如从类字段中获取验证器方法?

【问题讨论】:

    标签: python-3.x validation pydantic


    【解决方案1】:

    Config 上使用validate_assignment

    【讨论】:

    • 你看到validate_assignment默认不是True的任何原因吗?
    • 它会影响性能,我认为大多数情况下不会期望它默认开启。
    猜你喜欢
    • 2019-05-30
    • 2023-02-09
    • 2021-10-21
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 2023-02-15
    • 2022-07-04
    • 2021-10-05
    相关资源
    最近更新 更多