2

我试图弄清楚为什么日期在 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

我尝试添加一些格式,但似乎没有帮助,这里是文档

class fields.DateTime(dt_format='rfc822', **kwargs) 以 UTC 格式返回格式化的日期时间字符串。支持的格式为 RFC 822 和 ISO 8601。

有关 RFC 822 格式的更多信息,请参阅 email.utils.formatdate()。

有关 ISO 8601 格式的更多信息,请参阅 datetime.datetime.isoformat()。

参数:dt_format (str) – 'rfc822' 或 'iso8601'

不确定从 API 调用传入时如何制作日期格式。

4

1 回答 1

2

如您所见,您拥有"<built-in method now of type object at 0x10264d6e0>"而不是datetime对象。

我怀疑在您的代码中的某个地方您忘记输入()这样的括号:

someobject.lastUpdate = datetime.now

但应该是

someobject.lastUpdate = datetime.now()
于 2016-04-17T10:14:49.540 回答