如何从db.ListProperty中删除项?

时间:2011-09-10 08:17:20

标签: python google-app-engine

在Google App Engine解决方案(Python)中,我使用db.ListProperty来描述多对多关系,如下所示:

class Department(db.Model):
  name = db.StringProperty()

  @property
  def employees(self):
    return Employee.all().filter('departments', self.key())

class Employee(db.Model):
  name = db.StringProperty()
  departments = db.ListProperty(db.Key)

我通过简单地将Department键附加到db.ListProperty来创建多对多关系,如下所示:

employee.departments.append(department.key())

问题在于,当不再需要时,我不知道如何再次实际删除此关系。

我尝试使用Google搜索,但我似乎无法找到任何详细描述db.ListProperty的文档。

任何想法或参考?

2 个答案:

答案 0 :(得分:3)

ListProperty只是一个Python list,其中有一些辅助方法可以使其与GAE一起使用,因此适用于list的任何内容都适用于ListProperty。< / p>

employee.departments.remove(department.key())
employee.put()

请记住,每次进行更改时都必须对数据进行反序列化/重新序列化,因此,如果您在添加或删除单个值时寻找速度,则可能需要采用另一种方法来建模关系,例如this page关系模型部分。

如果要搜索数据存储区请求中的列表,ListProperty方法的缺点有时为producing very large indexes。 这对您来说可能不是一个问题,因为您的列表应该相对较小,但是对于未来的项目,请记住这一点。

答案 1 :(得分:1)

通过反复试验找到它:

employee.departments.remove(department.key())