2010-01-11 135 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

谢谢,就是这样。我担心我们会在这里疯狂。 –

相关问题