Przykładem najczęściej używanym jest autor i ich książki.
Każda książka jest przechowywana w magazynie danych jako osobna jednostka, której nazwa i jej autor są przechowywane jako pola w modelu.
Jeśli chcesz znać wszystkie książki przez jednego autora, można uruchomić kwerendę tak, że
book.author == desired_author
Ale z przodków można również zapisać każdą książkę i ustawić model (nowy model autor) do czy to jest rodzic (to przodek).
Teraz możesz po prostu powiedzieć "pokaż mi wszystkie książki, które mają tego autora jako rodzica".
A raczej "pokaż mi wszystkie dzieci tego przodka", a wszystkie książki tego autora są zwracane.
Może się wydawać, że nie jest to użyteczne w tym przykładzie, ale jeśli wyobrazisz sobie zamiast "autora", masz "użytkownika", a zamiast "książki" masz "wiadomość na forum" i dziesiątki tysięcy wiadomości i nagle staje się bardzo przydatny, aby móc znaleźć wszystkie wiadomości według użytkownika (np. pokaż mi własne wiadomości).
https://developers.google.com/appengine/docs/python/datastore/queryclass#Query_ancestor
ancestor (ancestor)
Adds an ancestor filter to the query. The query will return only entities with the specified ancestor.
Istnieją również korzyści w zakresie kosztów dla znalezienia każdy rekord spodziewam.
Czy te pomagają?[tutaj] (http://stackoverflow.com/questions/1011814/storing-hierarchical-data-in-google-app-engine-datastore) i [tutaj] (http://stackoverflow.com/questions/2490261/what -does-ancestor-mean-in-the-google-app-engine-datastore) – StuartLC
Drugie ogniwo oświetlało. "Transakcje w GAE istnieją tylko w grupach przodków-potomków." Wydaje się więc, że jeśli chcę korzystać z transakcji, powinienem dbać o przodków. Moje makaroniki w datastore GAE nie są jeszcze tak zaawansowane, ale dobrze wiedzieć! – deltanine