2010-01-11 134 views
2

我在寫一些Google App Engine代碼時出現奇怪的錯誤。DateTimeProperty在Google App Engine中將錯誤設置爲日期時間

我的程序包含這樣一些代碼:

import datetime 

... 

class Action(db.Model): 
    visibleDate = db.DateTimeProperty() 

... 

getActionQuery = Action.gql("WHERE user = :user AND __key__ = :key", user = user, key = self.request.get("key")) 
theAction = getActionQuery.get() 

.... 

theAction.visibleDate = datetime.datetime.strptime(self.request.get("visibleDate"), "%Y/%m/%d") 

然而,這產生以下錯誤:

 
Traceback (most recent call last): 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/webapp/__init__.py", line 509, in __call__ 
    handler.post(*groups) 
    File "/Users/redbird/Developer/betterdo-it/main.py", line 132, in post 
    theAction.visibleDate = datetime.datetime.strptime(self.request.get("visibleDate"), "%Y/%m/%d"), 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/db/__init__.py", line 472, in __set__ 
    value = self.validate(value) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/db/__init__.py", line 2308, in validate 
    (self.name, self.data_type.__name__)) 
BadValueError: Property visibleDate must be a datetime 

上爲什麼發生這種情況的任何想法?我已經測試過它,並且我知道我的時間正在進入,正在轉換正確,但是卻遇到了這個錯誤。

+1

或許日期的格式不正確? 'self.request.get(「visibleDate」)'返回什麼? – jbochi

+1

模型的定義中它不應該是'visibleDate = db.DateTimeProperty()'嗎? – jbochi

+0

它是;只是一個錯字。我修好了它。 –

回答

5

我覺得你在追蹤中錯過了一些東西。

我看到:datetime.datetime.strptime(self.request.get("visibleDate"), "%Y/%m/%d"),

注意逗號在該行的末尾。

該逗號使該行返回其中包含日期的元組。我假設你不小心添加了逗號,所以只需將其刪除,並且您應該正確指定日期時間。

審查:

from datetime import datetime 
a = (datetime(2000,1,1),) 
assert isinstance(a, tuple) 
a = (datetime(2000,1,1)) 
assert isinstance(a, datetime) 
+0

謝謝,就是這樣。我擔心我們會在這裏瘋狂。 –

相關問題