代码之家  ›  专栏  ›  技术社区  ›  jamesaharvey

如何按祖先检索谷歌应用引擎实体

  •  1
  • jamesaharvey  · 技术社区  · 14 年前

    在我的谷歌应用引擎数据存储中,我有以下两种型号:

    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 这似乎是正确的方法,但不起作用。

    1 回复  |  直到 14 年前
        1
  •  4
  •   Wooble Cees Timmerman    14 年前

    是否创建具有父级的搜索实体?referenceproperty不会创建祖先关系,而且您可能需要search.searchresult_set,它将是对搜索对象“search”具有引用的searchresult对象的查询。