Python TypeError:键id必须是字符串或数字

Python TypeError:键id必须是字符串或数字,python,google-app-engine,app-engine-ndb,Python,Google App Engine,App Engine Ndb,我试图从列表中删除键值。因此,我在类中创建了如下方法: def deleteEmployee(self, employee): employee_to_Delete = ndb.Key(Employee, employee) if employee_to_delete in self.employees: idx=self.employees.index(employee_to_delete) del self.employees[idx]

我试图从列表中删除
值。因此,我在类中创建了如下方法:

def deleteEmployee(self, employee):
    employee_to_Delete = ndb.Key(Employee, employee)
    if employee_to_delete in self.employees:
        idx=self.employees.index(employee_to_delete)
        del self.employees[idx]
        self.put()
然后在我调用这个方法的方法中,我有

class DeleteEmployeeHandler(webapp2.RequestHandler):
def post(self):
    employee_name = self.request.get('employee_name')
    employee=Employee.get_by_id(employee_name)
    emp_dept=employee.department
    dept=Department.get_or_insert(emp_dept)
    dept.deleteEmployee(employee)
    employee.delete()
但是我得到了错误信息

类型错误:密钥id必须是字符串或数字
。有人能告诉我为什么会发生这种情况吗?

您得到的错误来自,而不是Python的列表

您调用
ndb.Key(Employee,Employee)
我猜您传入的
Employee
是错误的类型。

您得到的错误是来自,而不是来自Python的列表

您调用
ndb.Key(Employee,Employee)
我猜您传入的
Employee
是错误的类型。

您得到的错误是来自,而不是来自Python的列表

您调用
ndb.Key(Employee,Employee)
我猜您传入的
Employee
是错误的类型。

您得到的错误是来自,而不是来自Python的列表


你调用
ndb.Key(Employee,Employee)
我猜你传入的
Employee
是错误的类型。

Employee
Employee
类的一个实例,你把它作为第二个参数传递给
ndb.Key
。但是错误消息会准确地告诉您出了什么问题:该参数应该是字符串或int,而不是实例

但是,因为您实际上已经有了实例,所以不需要构造新的键:employee对象已经有了一个键,您可以使用它来删除它

employee_to_Delete = employee.key

employee
employee
类的一个实例,您将其作为第二个参数传递给
ndb.Key
。但是错误消息会准确地告诉您出了什么问题:该参数应该是字符串或int,而不是实例

但是,因为您实际上已经有了实例,所以不需要构造新的键:employee对象已经有了一个键,您可以使用它来删除它

employee_to_Delete = employee.key

employee
employee
类的一个实例,您将其作为第二个参数传递给
ndb.Key
。但是错误消息会准确地告诉您出了什么问题:该参数应该是字符串或int,而不是实例

但是,因为您实际上已经有了实例,所以不需要构造新的键:employee对象已经有了一个键,您可以使用它来删除它

employee_to_Delete = employee.key

employee
employee
类的一个实例,您将其作为第二个参数传递给
ndb.Key
。但是错误消息会准确地告诉您出了什么问题:该参数应该是字符串或int,而不是实例

但是,因为您实际上已经有了实例,所以不需要构造新的键:employee对象已经有了一个键,您可以使用它来删除它

employee_to_Delete = employee.key


您在哪一行得到错误?在
employee\u to\u Delete=ndb.Key(employee,employee)
行上,您似乎需要说
dept.deleteEmployee(employee\u name)
而不是
dept.deleteEmployee(employee)
。当我尝试此操作时,我收到一条新的错误消息说
NameError:Global name'employee\u to\u delete'未定义。
您在哪一行收到错误?在
employee\u to\u delete=ndb.Key(employee,employee)
行,您似乎需要说
dept.delete employee(employee)
而不是
dept.delete employee(employee)
。当我尝试此操作时,会收到一条新的错误消息,上面写着
名称错误:未定义全局名称“employee\u to\u delete”。
在哪一行出现错误?在
employee\u to\u delete=ndb.Key(employee,employee)
行似乎需要说
dept.delete employee(employee\u name)
而不是
部门删除员工(员工)
。当我尝试此操作时,我会收到一条新的错误消息说
名称错误:未定义全局名称'employee\u to\u delete'。
在哪一行出现错误?在
员工删除=ndb.Key(员工,员工)
行,您似乎需要说
部门删除员工(employee_name)
而不是
dept.delete employee(employee)
。当我尝试此操作时,我收到一条新的错误消息说
name错误:全局名称“employee_to_delete”没有定义。
你能解释一下错误类型是什么意思吗?因为当我将行
employee_改为\u delete=ndb.key(employee,employee)时
to
employee\u to\u delete=ndb.Key(employee,employee.Key)
i收到错误消息
TypeError:Key id必须是字符串或数字;接收到的员工(Key=Key('employee','Alex Brown'),年龄=45,工作日期=datetime.date(2014,4,28),部门=u'Other charge',员工姓名=u'Alex Brown)INFO 2014-04-28 10:07:50878 module.py:627]默认值:“POST/deleteEmp HTTP/1.1”500-
你能解释一下错误的类型是什么意思吗?因为当我将行
employee\u改为\u delete=ndb.key(employee,employee)
改为
employee\u to\u delete=ndb.key(employee,employee.key)
i收到错误消息
TypeError:Key id必须是字符串或数字;接收到的员工(Key=Key('Employee','Alex Brown'),年龄=45,工作日期=datetime.date(2014,4,28),部门=u'Other Charges',员工姓名=u'Alex Brown')信息2014-04-28 10:07:50878模块。py:627]默认:“POST/deletemp HTTP/1.1”500-
你能解释一下你所说的错误类型是什么意思吗?因为当我将行
employee\u改为\u delete=ndb.key(employee,employee)
改为
employee\u to\u delete=ndb.key(employee,employee.key)
我得到错误消息
类型错误:key id必须是字符串或数字;接收到的employee(key=key('employee','Alex Brown'))日期(2014年4月28日),部门=其他费用,员工姓名=亚历克斯·布朗)信息2014-04-28 10:07:50878 module.py:627]默认:“POST/deleteEmp HTTP/1.1”500-
你能解释一下你所说的错误类型是什么意思吗