如何通过祖先检索Google App Engine实体

时间:2010-04-21 13:06:22

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

我的Google App Engine数据存储区中有以下两种型号:

class Search(db.Model):
    what = db.StringProperty()

class SearchResult(db.Model):
    search = db.ReferenceProperty(Search)

    title = db.StringProperty()
    content = db.StringProperty()

并且,我试图在以下函数中检索给定搜索实体的所有SearchResult实体:

def get_previous_search_results(what='', where=''):
    search_results = None

    search = db.GqlQuery("SELECT * FROM Search WHERE what = :1", what).fetch(1)
    if search:
        search_results = db.GqlQuery("SELECT * FROM SearchResult WHERE ANCESTOR IS :1", search[0].key()).fetch(10)

    return search_results

但是,它总是返回一个空集。

任何想法我做错了什么?我已经阅读了Python Datastore API docs,这似乎是正确的方法,但它不起作用。

1 个答案:

答案 0 :(得分:4)

您是否使用父级创建搜索实体? ReferenceProperty不会创建祖先关系,您似乎可能需要search.searchresult_set,它将是对SearchResult对象的查询,这些对象具有对搜索对象'search'的引用。