如何使用Pydantic为一个字段定义两个值类型



我使用Pydantic来验证值,它工作得很好,但我想为我的字段validated_at授权日期和Null类型,如:

validated_at:Opt[Datetime], Opt[Null]

有办法吗?

目前我的类是这样的:

class Fdes(FdesCreate):
"""FDES Validation Schema for get requests"""
id: PyObjectId = Field(default_factory=PyObjectId, alias="_id")
created_at: Datetime 
updated_at: Datetime
validated_at:Opt[Datetime]
archived_at: Opt[Datetime]

我不确定Opt,DatetimeFdesCreate是什么,但是,您可以简单地在模型定义中使用Optional,例如:

from datetime import datetime
from pydantic import BaseModel
from typing import Optional
class SomeModel(BaseModel):
validated_at: Optional[datetime]
s = SomeModel()
print(s)
# validated_at=None
s = SomeModel(validated_at=datetime.now())                                      
print(s)
# validated_at=datetime.datetime(2021, 9, 6, 20, 25, 13, 173546)
s = SomeModel(validated_at="something_else")                                    
# raises ValidationError:
# pydantic.error_wrappers.ValidationError: 1 validation error for SomeModel
#validated_at
#  invalid datetime format (type=value_error.datetime)

相关内容