Versuch, eine Viele-zu-Viele-Beziehung mit ndb zu modellieren. Kann jemand auf ein gutes Beispiel hinweisen, wie man das macht?Viele-zu-viele Beziehungen in ndb
An hier ist ein Beispiel dafür, was ich im Moment habe:
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()
Ist dies der richtige Weg, um darüber zu gehen? Ich habe mich gut umgesehen, kann aber keine gute Dokumentation zu diesem Thema finden.
Im Datenspeicher-Viewer kann ich sehen, dass diese Beziehung als Liste der Schlüssel gespeichert wird, was ich erwarte.
Allerdings, wenn ich versuche, sie in der Person-Klasse Methoden zu verwenden, wie folgt aus:
for guild in self.guilds:
ich:
TypeError: 'KeyProperty' object is not iterable
'für die Gilde in self.guilds' sollte funktionieren. Überprüfen Sie, ob Sie 'repeated = True' in Person setzen:' gildens = ndb.KeyProperty (kind = "Guild", repeated = True) ' –
Beachten Sie, dass es eine obere Grenze für die Anzahl der Beziehungen gibt, die mit wiederholten Eigenschaften erreicht werden können . Wenn Sie viele Tausende oder mehr, viele bis viele Beziehungen benötigen oder Sie Beziehungen nennen müssen, funktioniert auch eine zwischengeordnete Entität, die zwei Schlüsseleigenschaften enthält, die jeweils auf ein Ende der Beziehung zeigen, aber im Allgemeinen weniger effizient ist und Sie möglicherweise haben um einige redundante Informationen in dieser Entität zu speichern, wenn Sie Übersichtsansichten benötigen, um zusätzliche Lookups zu vermeiden. –