2010-04-21 48 views
1

检索谷歌App Engine的实体,我有以下2种型号在我的谷歌App Engine数据存储:如何通过祖先

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

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

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

而且,我试图检索给定的搜索实体的所有信息搜索结果的实体在以下功能:

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,这看起来像是正确的方法,但它不起作用。

回答

4

您是否正在使用父项创建搜索实体? ReferenceProperty不会创建祖先关系,并且似乎您可能需要search.searchresult_set,它将成为SearchResult对象的Query,该对象具有对搜索对象“搜索”的引用。

+1

如果你想让'SearchResult'为'Search'的后代,你必须用'a_result = SearchResult(parent = a_search,...)创建它们' – 2010-04-21 15:32:18