Python ndb ValueError:需要多于1个值才能解压缩

时间:2014-04-25 08:58:16

标签: python google-app-engine app-engine-ndb

我试图从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 /名称,employeesDepartment类的属性,定义为

employees =ndb.keyProperty(repeated=True)

我从一个表单中获取employee_id的值。我试图在网上找到解决方案,但我发现错误是由于很多原因引起的,其中没有一个与我的相似问题。为什么会发生这种情况的任何建议?

修改 enter image description here

2 个答案:

答案 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")
相关问题