我有一个Class
实体,其属性为name
和students
。我想首先创建实体,然后再向学生属性添加值。但是我我不知道该怎么做。我试过null
(请原谅我,如果这是一个令人厌恶的,我是Python的新手)但它会返回一条错误信息。这是我的Class
定义
class Class(ndb.Model):
name = ndb.StringProperty(required=True)
students = ndb.KeyProperty(repeated=True)
...
我的班级模型的处理程序
class ClassHandler(webapp2.RequestHandler):
def post(self):
name=self.request.get('class_name')
callback = self.request.get('callback')
class = class.get_by_id(name)
if class:
self.error(409)
else:
n = self.request.get('class_name')
class=Class(id=n, class_name=n, members) #<<<---//this is where am stuck
team.put()
if callback:
self.response.write(callback + '(' + team.toJSON() + ')')
else:
self.response.write(team.toJSON())
我花了几个小时在谷歌上寻找解决方案。对于我需要做什么的任何建议都将不胜感激。
编辑:这是我尝试使用null
时收到的错误消息
答案 0 :(得分:1)
好的,首先class
是python中受保护的单词,你应该不命名你的变量class
。执行此操作时,您将在本地覆盖单词class
到Python的含义。此外,您似乎在做class.get_by_id(name)
。你的意思是Class.get_by_id(name)
?如果get_by_id(argument)
是Class
类的方法,那将是正确的语法。
其次,您应该发布您带有错误消息的跟踪,以便获得有关您的问题的帮助。
我认为您可以在没有任何参数的情况下声明Class()
,它将实现您的目标。它将创建没有指定任何参数的Class对象,您可以稍后指定它们。
class ClassHandler(webapp2.RequestHandler):
def post(self):
name=self.request.get('class_name')
callback = self.request.get('callback')
the_class = Class.get_by_id(name)
if not the_class:
self.error(409)
else:
n = self.request.get('class_name')
the_class = Class()
team.put()
if callback:
self.response.write(callback + '(' + team.toJSON() + ')')
else:
self.response.write(team.toJSON())
class
更改为the_class
。Class.get_by_id(name)
这是调用该方法的正确语法,与ndb.Model相关联,由Class
继承if not the_class
。那是你想要的吗?否则,我对那里发生的事感到困惑。the_class = Class()
我认为你问的是什么答案 1 :(得分:1)
@akgill所说的一切都是+1。
至于您的具体问题,您无需在实体实例化时提供任何属性,也可以提供部分或全部属性。
当你谈论“null”或“无”时,我不确定你指的是什么。
任何添加学生的方法都需要在构造函数调用中提供学生列表,或者使用追加
cls = Class()
cls.students.extend([list of student keys])x