我有一个具有ndb.DateTimeProperty的ndb.Model和一个使用ndb.DateTimeProperty创建时间戳的ndb.ComputedProperty。
import time
from google.appengine.ext import ndb
class Series(ndb.Model):
updatedDate = ndb.DateTimeProperty(auto_now=True)
time = ndb.ComputedProperty(lambda self: time.mktime(self.updatedDate.timetuple()))
我遇到的问题是在第一次调用.put()时(seriesObj只是从Series类创建的对象)
seriesObj.put()
ndb.DateTimeProperty此时为空。我收到以下错误:
File "/main.py", line 0, in post series.put()
time = ndb.ComputedProperty(lambda self: time.mktime(self.updatedDate.timetuple()))
AttributeError: 'NoneType' object has no attribute 'timetuple'
我可以说这仅仅是因为未设置ndb.DateTimeProperty,但是在ndb.ComputedProperty去读取它之前,我不知道如何设置它。
这不是ndb.ComputedProperty的问题,因为我已经使用ndb.DateTimeProperty设置对其进行了测试,并且工作正常。
任何帮助都将是巨大的!
在进一步研究此问题后,避免在导入模块时评估默认值。我刚设置了updatedDate
创建新的时的初始值Series
。
import datetime
series = Series(updatedDate = datetime.datetime.now())
series.put()
我本来希望使用更“不要考虑”的解决方案,_pre_put_hook
但在测试中,它似乎在评估之前没有被调用time
ComputedProperty
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句