его конвертирую в datetime
class Receipt(ma.Schema):
fiscal_datetime = fields.DateTime(
tzinfo=pytz.utc, data_key="dateTime"
)
@pre_load
def nornalize_val(self, in_data):
if type(in_data['dateTime']) == int:
in_data['dateTime'] = datetime.utcfromtimestamp(
in_data['dateTime']
)
print(
'transform datetime ok val=%s, type=%s'
% (
in_data['dateTime'],
type(in_data['dateTime']),
)
)
else:
in_data['dateTime'] = in_data['dateTime']
return in_data
Если json не прошел проверку, я возвращаю ошибку и заодно принт значения и типа
try:
data = main_schema.load(json_input)['document']['receipt']
except ValidationError as err:
print(
'ValidationError val=%s, type=%s'
% (
json_input['document']['receipt']['dateTime'],
type(json_input['document']['receipt']['dateTime']),
)
)
return jsonify({'errors': err.messages}), 422
Отправляю запрос с 'dateTime': 1558621980
Получаю ошибку 'Not a valid datetime.'
В консоле вижу что тип изменился на datetime:
transform datetime ok val=2019-05-23 14:33:00, type=<class 'datetime.datetime'>
ValidationError val=2019-05-23 14:33:00, type=<class 'datetime.datetime'>
Вопрос. Что я делаю не так?
эм. class marshmallow.fields.DateTime(format=None, **kwargs) A formatted datetime string in UTC. https://marshmallow.readthedocs.io/en/3.0/api_reference.html#marshmallow.fields.DateTime
Обсуждают сегодня