Następujące backreferences nieznanych rodzajów w NDB

Jestem w trakcie pisania mojej pierwszej usługi internetowej RESTful na GAE i w środowisku wykonawczym Pythona 2.7; Zacząłem używać nowego, błyszczącego API Guida.

Nie jestem jednak pewien, jak rozwiązać konkretny przypadek bez ukrytej funkcji wstecznego odwołania w oryginalnym interfejsie API db. Jeśli agent użytkownika zażąda określonego zasobu, a zasoby 1 stopnia zostaną usunięte:

host / api / kind / id? depth = 2

Jaki jest najlepszy sposób na odkrycie powiązanego zbioru jednostek z „jedynki” w relacji jeden-do-wielu, biorąc pod uwagę, że rodzaj pokrewnego podmiotu jest nieznany w czasie rozwoju?

Nie mogę użyć zapytania zastępującego, jak opisano w punkcie apoprzednie zapytanie SO z powodu tego ostatniego ograniczenia. Fakt, że mój model jest definiowalny w czasie wykonywania (a zatem nie jest zakodowany na stałe), uniemożliwia mi użycie zapytania do filtrowania właściwości pasujących kluczy.

Przodek i inne bezproblemowe zapytania są również usuwane z powodu ograniczenia magazynu danych, co uniemożliwia filtrowanie właściwości bez określonego rodzaju.

Jak dotąd jedynym pomysłem, jaki miałem (poza powracaniem do db api), jest użycie transakcji międzygrupowej do napisania własnego odwołania do „jednego” poprzez aktualizację ndb.StringProperty (repeat = True) zawierającego wszystkie rodzaje pokrewne, gdy wprowadzany jest nowy rodzaj jednostki lub po prostu utrzymując listę kluczy na „jednym” ndb.KeyProperty (repeat = True) za każdym razem, gdy powiązana „wiele” jednostka jest zapisywana w magazynie danych.

Mam nadzieję, że ktoś bardziej doświadczony niż ja sam może zasugerować lepsze podejście.

Biorąc pod uwagę sugestię jmort253, spróbuję rozszerzyć moje pytanie konkretnym przykładem zaadaptowanym z dokumentów:

class Contact(ndb.Expando):
    """ The One """

    # basic info
    name = ndb.StringProperty()
    birth_day = ndb.DateProperty()

    # If I were using db, a collection called 'phone_numbers' would be implicitly 
    # created here.  I could use this property to retrieve related phone numbers 
    # when this entity was queried.  Since NDB lacks this feature, the service 
    # will neither have a reference to query nor the means to know the 
    # relationship exists in the first place since it cannot be hard-coded.  The
    # data model is extensible and user-defined at runtime; most relationships
    # will be described only in the data, and must be discoverable by the server.
    # In this case, when Contact is queried, I need a way to retrieve the
    # collection of phone numbers.

    # Company info.
    company_title = ndb.StringProperty()
    company_name = ndb.StringProperty()
    company_description = ndb.StringProperty()
    company_address = ndb.PostalAddressProperty()

class PhoneNumber(ndb.Expando):
    """ The Many """

    # no collection_name='phone_numbers' equivalent exists for the key property
    contact = ndb.KeyProperty(kind='Contact')
    number = ndb.PhoneNumberProperty()

questionAnswers(2)

yourAnswerToTheQuestion