如果在不使用验证器的情况下在字段中传递None,我可以在pydantic中设置默认值吗?
我有下面的代码,但在我看来,这里的验证器对于contract_ndfl来说是多余的。有没有什么方法可以不使用验证器?
我的编码:
class User(BaseModel):
user: int
s_name: str
contract_ndfl: Optional[int]
@validator('contract_ndfl')
def set_contract_ndfl(cls, v):
return v or 13
心愿码:
class User(BaseModel):
user: int
s_name: str
contract_ndfl: Optional[int] = 13
2条答案
按热度按时间j91ykkif1#
也许你可以为所有字段使用一个验证器,并为它定义一个基类!
然后你可以使用一个子类来实现你的愿望代码:
mzsu5hc02#
除了使用验证器,您还可以覆盖
__init__
,以便立即忽略违规字段:然后可以使用它来代替
BaseModel
,如下所示:请注意,可选字段不会被覆盖。
这种方法只会激活字段的默认行为,而不管它是如何定义的。与使用验证器相比,这不太可能产生意外的结果。