2010-04-21 4 views
1

j'ai les 2 modèles suivants dans mon Google App Engine datastore:Comment récupérer des entités Google App Engine par ancêtre

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

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

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

Et, je suis en train de récupérer toutes les entités SearchResult pour une entité de recherche donnée ci-après function:

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 

Cependant, il retourne toujours un ensemble vide.

Des idées de ce que je fais mal? J'ai lu le Python Datastore API docs et cela semble être la bonne façon de le faire, mais ça ne marche pas.

Répondre

4

Créez-vous les entités de recherche avec un parent? ReferenceProperty ne crée pas de relation ancêtre et il est probable que vous souhaitiez rechercher search.searchresult_set, qui sera une requête pour les objets SearchResult ayant une référence à l'objet de recherche 'search'.

+1

Si vous voulez que 'SearchResult' soit un descendant de' Search', vous devez les créer avec 'a_result = SearchResult (parent = a_search, ...)' –