2016-04-17 53 views
1

我想弄清楚爲什麼日期不在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.

有關RFC 822格式的更多信息,請參閱email.utils.formatdate()。

有關ISO 8601 格式的更多信息,請參閱datetime.datetime.isoformat()。

參數:dt_format(STR) - 「RFC822」或「ISO8601」

不知道如何讓日期格式,當它從API調用來英寸

回答

1

正如你所看到的,你有"<built-in method now of type object at 0x10264d6e0>"而不是datetime對象。

我懷疑的地方在你的代碼,你忘了像這種類型的括號()

someobject.lastUpdate = datetime.now 

但應

someobject.lastUpdate = datetime.now() 
+0

這是它,現在回到「LASTUPDATE」:「2016- 04-17T16:03:43.525476「 – nycynik

+0

self.lastUpdate = datetime.datetime.now不是self.lastUpdate = datetime.datetime.now() – nycynik

+2

@nycynik:無關:不使用'datetime.now()',使用而不是'datetime.utcnow()'或'datetime.now(some_timezone)'。僅僅是'datetime.now()'可能會產生不明確的值,並且utc偏移在不同的時間(或不同的時區)可能會有所不同。 – jfs

相關問題