了解GAE中的ListProperty后端行为

时间:2011-11-21 18:26:18

标签: google-app-engine google-cloud-datastore

我正在尝试了解您应该如何访问GAE db.ListProperty(db.Key)中的项目。

实施例

Magazine db.Model实体有一个包含10个Article实体的db.ListProperty(db.Key)。我想获取Magazine对象并显示文章名称和日期。我是否对实际的文章对象进行了10次查询?我是否进行批量查询?如果有50篇文章怎么办? (请勿批量查询依赖于IN operator, which is limited to 30 or fewer elements?)

2 个答案:

答案 0 :(得分:7)

所以你正在描述这样的事情:

class Magazine(db.Model):   
    ArticleList = db.ListProperty(db.Key)

class Article(db.Model):
    ArticleName = db.StringProperty()
    ArticleDate = db.DateProperty()

在这种情况下,获取所列文章的最简单方法是使用Model.get()方法,该方法查找键列表。

m = Magazine.get() #grab the first record

articles = Article.get(m.ArticleList) #get Articles using key list

for a in articles:
    name = a.ArticleName
    date = a.ArticleDate
    #do something with this data

根据您计划使用数据的方式,您可能最好将“杂志”引用属性添加到文章实体中。

答案 1 :(得分:-2)

您需要阅读Modeling Entity Relationships,尤其是关于一对多的部分。