2010-04-21 71 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