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)时
toemployee\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-
你能解释一下你所说的错误类型是什么意思吗