修复"不支持的日期格式"从休息端点封送数据时

时间:2016-04-17 02:47:51

标签: python datetime flask flask-restplus

我想弄清楚为什么日期不适用于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 =&#39; rfc822&#39;,** kwargs)   以UTC格式返回格式化的日期时间字符串。支持的格式是RFC   822和ISO 8601。

     

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

     

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

     

参数:dt_format(str) - &#39; rfc822&#39;或者&#39; iso8601&#39;

不确定如何从API调用进入日期格式。

1 个答案:

答案 0 :(得分:2)

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

我怀疑代码中的某个地方忘了输入括号(),如下所示:

someobject.lastUpdate = datetime.now

但它应该是

someobject.lastUpdate = datetime.now()