【发布时间】:2013-12-05 07:59:31
【问题描述】:
通过构造函数赋值。但得到“TypeError:'NoneType'对象不支持项目分配”。
import webapp2
from google.appengine.ext import ndb
class test(ndb.Model):
status = ndb.StringProperty(default=None)
def __init__(self):
self.status = "Test Status"
class MainPage(webapp2.RequestHandler):
def get(self):
a = test()
a.put()
app = webapp2.WSGIApplication([('/', MainPage)], debug=True)
错误:
File "/home/user/Appengine/guestbook/guestbook.py", line 15, in get
a = test()
File "/home/user/Appengine/guestbook/guestbook.py", line 10, in __init__
self.status = "Test Status"
File "/home/user/google_appengine/google/appengine/ext/ndb/model.py", line 1265, in __set__
self._set_value(entity, value)
File "/home/user/google_appengine/google/appengine/ext/ndb/model.py", line 1011, in _set_value
self._store_value(entity, value)
File "/home/user/google_appengine/google/appengine/ext/ndb/model.py", line 992, in _store_value
entity._values[self._name] = value
TypeError: 'NoneType' object does not support item assignment
【问题讨论】:
-
不确定是否重要,但也许您应该先致电
ndb.Model.__init__(self)。 (或者您可能使用super)...这可能会将entity._values设置为None以外的其他值... -
@mgilson
ndb.Model.__init__(self)可以。 Btb 我怎样才能为上面的代码添加一个 key_name ? -
key_name?你这是什么意思?
-
我的意思是像
a = test(id='unique_id')这样的实体 ID。并通过test.get_by_id('unique_id')获取该实体 -
此外,这个 init 方法是完全多余的,因为您可以使用 default="Test Status" 设置属性的默认值
标签: python google-app-engine app-engine-ndb