我正在尝试从列表中删除key
值。所以我在我的班级中创建了一个方法,如下所示:
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()
但我收到错误消息
TypeError: key id must be a string or a number
。有人可以告诉我为什么会这样吗?
答案 0 :(得分:2)
employee
是Employee
类的一个实例,您将其作为第二个参数传递给ndb.Key
。但错误消息告诉您确切的错误:该参数应该是字符串或int,而不是实例。
但是,既然你已经拥有了实例,那么你就不需要构建一个新的Key:employee对象已经有了一个,你可以用来删除它。
employee_to_Delete = employee.key
答案 1 :(得分:1)
您得到的错误来自google's datastore,而不是来自Python的列表。
您致电ndb.Key(Employee, employee)
我的猜测是您传入的employee
类型错误。