Я пытаюсь выяснить, почему дата не работает в flask-restplus.Исправить «формат неподдерживаемых дат» при маршалировании данных из конечной точки отдыха
MarshallingError: Unable to marshal field "lastUpdate" value "<built-in method now of type object at 0x10264d6e0>": Unsupported DateTime format
127.0.0.1 - - [16/Apr/2016 22:24:18] "POST /api/v1/course/record/ab HTTP/1.1" 500 -
А вот объект, который используется для сортировочной
course_record_model = ns.model('Model', {
'topic': fields.String,
'totalMinutes': fields.Integer,
'percentComplete': fields.Integer,
'lastUpdate': fields.DateTime,
})
Обратите внимание на fields.DateTime. Это проблема.
def __init__(self, courseid, memberid, **kwargs):
"""Create instance."""
db.Model.__init__(self, **kwargs)
self.courseID = courseid
self.memberID = memberid
self.lastUpdate = datetime.datetime.now
Я пытался добавить некоторые форматы, но это, кажется, не помогает, вот документы
класс fields.DateTime (dt_format 'rfc822' = ** kwargs) Возвращать а форматированная строка даты и времени в UTC. Поддерживаемые форматы: RFC 822 и ISO 8601.
См. Email.utils.formatdate() для получения дополнительной информации о формате RFC 822.
См. Datetime.datetime.isoformat() для получения дополнительной информации о формате ISO 8601 .
Параметры: dt_format (ул) - «rfc822» или «ISO8601»
Не знаете, как сделать формат даты, когда она поступает из вызова API.
Это был он, теперь возвращается «lastUpdate»: «2016- 04-17T16: 03: 43.525476 « – nycynik
self.lastUpdate = datetime.datetime.now не был self.lastUpdate = datetime.datetime.now() – nycynik
@nycynik: не связан: не используйте' datetime.now() ', используйте либо 'datetime.utcnow()' или 'datetime.now (some_timezone)' вместо. Просто 'datetime.now()' может создавать неоднозначное значение, а смещение utc может быть различным в разное время (или в разных часовых поясах). – jfs