[英]Python validate date using pydantic to accept empty string
我正在使用 pydantic 驗證 AWS Lambda 中的數據,我有一個日期字段,可以接受有效日期或空字符串。
當我將一個空字符串傳遞給該字段“日期”時,它不起作用並且我收到以下錯誤:
pydantic.error_wrappers.ValidationError: 1 validation error for EmployeeInput
date
invalid datetime format (type=value_error.datetime)
這就是我定義模型的方式:
class EmployeeInput(BaseModel):
last_name: str = ''
first_name: str = ''
date: Optional[datetime] = get_date_now()
我嘗試使用Union[datetime, str]
,它現在接受空字符串,但不再驗證日期。
如何讓我的字段同時接受空字符串 '' 並驗證內容是否是正確的日期?
你的第一個錯誤是正常的。 實際上,您要求提供日期或None
,但是您傳遞了一個字符串,當然,它是空的,但仍然是一個字符串,因此,您不符合該方案。
我看到的僅接受日期或空字符串的解決方案是使用 Union 編寫架構,並編寫自己的驗證器,如下所示:
def date_validator(date):
if not isinstance(date, datetime) and len(date) > 0:
raise ValueError(
"date is not an empty string and not a valid date")
return date
class EmployeeInput(BaseModel):
last_name: str = ''
first_name: str = ''
date: Union[datetime, str] = get_date_now()
_date_validator = validator(
'date', allow_reuse=True)(date_validator)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.