如何在Cerberus中使用日期时间类型的最小值



我想在Cerberus中的datetime类型中验证一个值大于或等于1900年1月1日的字段,但不能以这种方式工作:

from cerberus import Validator 
from datetime import datetime

v = Validator()
schema = {
"birthdate": {
"type": "datetime",
"required": True,
"min": datetime(1900, 1, 1)
}
}
document_valid = {'birthdate': '05/03/1900'}
document_invalid = {'birthdate': '05/03/1800'}
print(v.validate(document_valid, schema)) # I want this True
print(v.validate(document_invalid, schema)) # I want this False

有人能帮我吗?

我正在将此版本用于Cerberus:Cerberus==1.3.4

您的方法是而非false,只是缺少一个决定性的组件,即解释日期格式

试试这个:

from cerberus import Validator 
from datetime import datetime   
v = Validator()
to_date = lambda s: datetime.strptime(s, '%d/%m/%Y') # date-formatting
schema = {
"birthdate": {
"type": "datetime",
"required": True,
'coerce': to_date,
"min": datetime(1900, 1, 1)
}
}
document_valid = {'birthdate': '05/03/1900'}
document_invalid = {'birthdate': '05/03/1800'}
print(v.validate(document_valid, schema)) # I want this True
print(v.validate(document_invalid, schema)) # I want this False

相关内容

  • 没有找到相关文章

最新更新