作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 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())
问题是当不再需要这种关系时,我不知道如何真正删除它。
我试过谷歌搜索,但我似乎找不到任何详细描述 db.ListProperty 的文档。
有什么想法或引用吗?
最佳答案
ListProperty
只是一个 Python list
,带有一些辅助方法以使其与 GAE 一起工作,因此适用于 list
的任何内容都适用到 ListProperty
。
employee.departments.remove(department.key())
employee.put()
请记住,每次进行更改时都必须对数据进行反序列化/重新序列化,因此如果您在添加或删除单个值时寻求速度,您可能需要使用另一种对关系建模的方法,如this page 的关系模型部分.
ListProperty
方法有时也有缺点 producing very large indexes如果您想在数据存储区请求中搜索列表。这对您来说可能不是问题,因为您的列表应该相对较小,但在未来的项目中需要牢记这一点。
关于python - 如何从 db.ListProperty 中删除项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7370488/
我是一名优秀的程序员,十分优秀!