簡體   English   中英

Appengine:TypeError:'NoneType'對象不支持項目分配

[英]Appengine: TypeError: 'NoneType' object does not support item assignment

Tring通過構造函數分配值。 但得到“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

您可能需要通過調用__init__ ndb.Model正確初始化ndb.Model

class test(ndb.Model):
    status = ndb.StringProperty(default=None)

    def __init__(self):
        ndb.Model.__init__(self)
        self.status = "Test Status"

如果你想傳遞任何參數,你需要做

class Test(ndb.Model): # Classes have uppercase first letter...
    status = ndb.StringProperty(default=None)

    def __init__(self, *a, **k):
        super(Test, self).__init__(self)
        self.status = "Test Status"

那你應該可以做到

a = Test(foo='bar')

但是,我不確定status

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM