- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在 Google App Engine 中,有一个 ListProperty 这样的东西,它允许您保存项目的列表(数组)。您还可以指定所持有项目的类型,例如字符串、整数或其他。
Google App Engine 还允许您拥有 ReferenceProperty。 ReferenceProperty “包含”对另一个 Google App Engine 模型实体的引用。如果您访问 ReferenceProperty,它将自动检索引用指向的实际实体。这很方便,因为它胜过获取 key ,然后获取所述 key 的实体。
但是,我没有看到任何诸如 ListReferenceProperty(或 ReferenceListProperty)之类的东西。我想保存一个对其他实体的引用列表,当我尝试访问列表中的元素时会自动解析。我能得到的最接近的似乎是保存一个 db.Key 对象列表。我可以使用这些键然后从服务器手动检索它们的关联实体。
有什么好的解决办法吗?基本上,我希望能够拥有对其他实体的(自动取消引用)引用的集合。我几乎可以通过收集其他实体的键来达到目标,但我希望它“知道”这些是关键项,并且它可以取消引用它们作为对我的服务。
谢谢
最佳答案
第一步:
使用 db.ListProperty(db.Key) 创建关系。您希望 ListProp 位于多对多关系中引用较少的实体上。这也将为您提供反向引用。所以:
class Spam
prop1 = db.String
eggs = db.List
class Eggs
prop1 = db.string
@property
def spams(self):
return Spam.all().filter('eggs', self.key())
这提供了两种方式的引用。
第二步:
创建一个取消引用属性的实用方法。
def prefetch_refprops(entities, *props):
"""Dereference Reference Properties to reduce Gets. See:
http://blog.notdot.net/2010/01/ReferenceProperty-prefetching-in-App-Engine
"""
fields = [(entity, prop) for entity in entities for prop in props]
ref_keys = [prop.get_value_for_datastore(x) for x, prop in fields]
ref_entities = dict((x.key(), x) for x in db.get(set(ref_keys)))
for (entity, prop), ref_key in zip(fields, ref_keys):
prop.__set__(entity, ref_entities[ref_key])
return entities
用法如下:
derefrenced_spams = prefetch_refprops(Spams, models.Spam.eggs)
关于python - Google App Engine for Python 中的引用文献列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4719700/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我对描述 PHP 内部工作原理、陷阱和一些高级功能的文献(互联网上的文章、杂志、书籍、播客 - 我真的不介意任何东西)很感兴趣。那里有这样的东西吗?我试着在谷歌上搜索,但大多数文章都是关于从 PHP
我知道这个问题的答案是否可能是主观的,(而且我还没有找到类似的问题)但我的问题如下: 我在互联网/文献上看到过不同来源的代码片段,其中一个来 self 项目中的队友。通常他们中的一些人会采用类似...
我是一名优秀的程序员,十分优秀!