По умолчанию поля DateTime будут сериализованы в формат, подобный 2020-02-02T13:25:33
, но я хочу сериализовать его до отметки времени unix. Я прочитал документы flask -marshmallow и документы marshmallow , я только нахожу способы настроить выходной формат даты и времени. Поэтому мой вопрос заключается в том, что любое простое решение я могу сделать, чтобы достичь этого?
У меня есть определение модели:
class Folder(CRUDMixin, db.Model):
__tablename__ = 'folder'
create_time = db.Column(db.DateTime, index=True, default=datetime.utcnow)
update_time = db.Column(db.DateTime, index=True, default=datetime.utcnow)
И это определение схемы:
class FolderSchema(marshmallow.Schema):
create_time = DateTime(format='timestamp')
update_time = DateTime(format='timestamp')
Я нашел довольно сложный способ добиться этого, я пытаюсь найти другой простой способ.
class DateTime(fields.DateTime):
"""
Class extends marshmallow standard DateTime with "timestamp" format.
"""
SERIALIZATION_FUNCS = \
fields.DateTime.SERIALIZATION_FUNCS.copy()
DESERIALIZATION_FUNCS = \
fields.DateTime.DESERIALIZATION_FUNCS.copy()
SERIALIZATION_FUNCS['timestamp'] = lambda x: int(x.timestamp()) * 1000
DESERIALIZATION_FUNCS['timestamp'] = datetime.fromtimestamp
class FolderSchema(marshmallow.Schema):
create_time = DateTime(format='timestamp')
update_time = DateTime(format='timestamp')