Provare a modellare una relazione molti-a-molti con ndb. Qualcuno può indicare un buon esempio di come farlo?Relazione molti-a-molti in ndb
A qui è un esempio di ciò che ho in questo momento:
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()
È questo il modo corretto di andare su di esso? Ho dato una buona occhiata in giro ma non riesco a trovare alcuna buona documentazione sull'argomento.
Nel visualizzatore del datastore, posso vedere questa relazione memorizzata come un elenco di chiavi, che mi aspetto.
Tuttavia, quando cerco di usarle nei metodi della classe Persona come questo:
for guild in self.guilds:
ottengo:
TypeError: 'KeyProperty' object is not iterable
'per la gilda in self.guilds' dovrebbe funzionare. Controlla se hai messo 'repeat = True' in Person:' guilds = ndb.KeyProperty (kind = "Guild", ripetuto = True) ' –
Nota c'è un limite superiore al numero di relazioni che possono essere raggiunte con proprietà ripetute . Se hai bisogno di molte migliaia o più, molte o molte relazioni, o hai bisogno di nominare le tue relazioni, allora anche un'entità intermedia che detiene due proprietà chiave ciascuna che punta a ciascuna estremità della relazione funzionerà, ma in genere è meno efficiente e potresti avere per memorizzare alcune informazioni ridondanti in questa entità se sono necessarie viste riepilogative per evitare looklup aggiuntivi. –