在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的文档。
任何想法或参考?
答案 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())