Próba modelowania relacji wielu do wielu za pomocą ndb. Czy ktokolwiek może wskazać dobry przykład, jak to zrobić?Relacja wielu do wielu w ndb
Pod tutaj jest przykładem tego, co mam w tej chwili:
class Person(ndb.Model):
guilds = ndb.KeyProperty(kind="Guild", repeated=True)
class Guild(ndb.Model)
members = ndb.KeyProperty(kind="Person", repeated=True)
def add_person(self, person):
self.members.append(person.key)
self.put()
person.guilds.append(self.key)
person.put()
Czy to jest prawidłowy sposób się do tego zabrać? Dobrze się rozejrzałam, ale nie mogę znaleźć żadnej dobrej dokumentacji na ten temat.
W przeglądarce datastore widzę, że relacja ta jest zapisana jako lista kluczy, której oczekuję.
Jednak, gdy staram się je wykorzystywać w metodach klasy osoba taka jak ta:
for guild in self.guilds:
uzyskać:
TypeError: 'KeyProperty' object is not iterable
'dla gildii w self.guilds' powinno działać. Sprawdź againt jeśli umieścisz 'repeat = True' w Person:' guilds = ndb.KeyProperty (kind = "Guild", repeat = True) ' –
Uwaga: istnieje górny limit liczby relacji, które można osiągnąć przy powtarzających się właściwościach . Jeśli potrzebujesz wielu tysięcy lub więcej, wielu do wielu relacji lub musisz nazywać Cię relacjami, wtedy pośrednia jednostka, która ma dwie cechy szczególne, wskazując na każdy koniec związku, również będzie działała, ale generalnie jest mniej wydajna i możesz mieć do przechowywania niektórych niepotrzebnych informacji w tym obiekcie, jeśli potrzebujesz widoków podsumowania, aby uniknąć dodatkowych filtrów podglądu. –