如果在不使用验证器的情况下在字段中传递了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
答案 0 :(得分:0)
GitHub上的协作者说,只有通过当前编写的代码才能实现预期的目标。
答案 1 :(得分:0)
也许您可以在所有字段中使用验证器foo并为其定义BaseClass!
class NoneDefaultModel(BaseModel):
@validator("*", pre=True)
def not_none(cls, v, field):
if field.default and v is None:
return field.default
else:
return v
然后,您可以使用子类来实现您希望的代码:
class Bar(NoneDefaultModel):
bar: int = 5
Bar(bar=None)
# Bar(bar=5)