I'm trying to coerce string as date so it can validate date data type, but it still returns False
:
from cerberus import Validator
from datetime import datetime
v = Validator()
v.schema = {'start_date': {'type': 'date','coerce':datetime.date}}
v.validate({'start_date': '2017-10-01'})
>>> False
I have tried to use the integer and it works. I'm not sure why date conversion is not working:
v = Validator()
v.schema = {'amount': {'type': 'integer','coerce': int}}
v.validate({'amount': '2'})
>>> True
Any help would be appreciated.
I am afraid that datetime.date
alone won't convert a string to a date value. If you try that in the REPL this is what you get:
>>> datetime.date('2017-10-01')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: descriptor 'date' requires a 'datetime.datetime' object but received a 'str'
Try something like this instead:
from cerberus import Validator
from datetime import datetime
v = Validator()
to_date = lambda s: datetime.strptime(s, '%Y-%m-%d')
v.schema = {'start_date': {'type': 'datetime','coerce': to_date}}
v.validate({'start_date': '2017-10-01'})
>>> True
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With