我试图从datastore
中检索实体,然后为其中一个属性添加一个值但是收到错误
ValueError: need more than 1 value to unpack
我是从RequestHandler
执行此操作。这是我的代码
class AddNewEmployeeHandler(webapp2.RequestHandler):
def post(self):
employee_name = self.request.get('employee_id')
callback =self.request.get('callback')
employee = Employee.get_by_id(employee_name)
if employee:
self.error(409)
else:
dept = Department.get_or_insert(key_name="Other Charges")
dept.employees.append(employee)
dept.put()
Other Charges
是数据存储区中已存在的实体的ID /名称,employees
是Department
类的属性,定义为
employees =ndb.keyProperty(repeated=True)
我从一个表单中获取employee_id
的值。我试图在网上找到解决方案,但我发现错误是由于很多原因引起的,其中没有一个与我的相似问题。为什么会发生这种情况的任何建议?
修改
答案 0 :(得分:1)
dept.employees期待密钥,并且您正在传递Employee实体,它应该是:
dept.employees.append(employee.key)
要直接添加Employee实体,应该在Department Model中以这种方式定义:
employees = StructuredProperty(Employee, repeated=True)
这取决于您希望如何构建应用程序数据模型
答案 1 :(得分:1)
看起来您使用key_name作为关键字参数调用get_or_insert
。但是,它期望它作为一种位置论证。 See the docs here。试试这个:
dept = Department.get_or_insert("Other Charges")