Zunächst ein Wort der Warnung, dies ist nicht nur ein relationales Schema, sondern ein rekursiv relationales. Sie könnten den Beziehungen folgen und am Ende alle laden das UserAccount
Objekte.
Denken Sie daran, dass es keine Verknüpfungen gibt in MongoDB - Sie bitten also den Client-Code (Mongoengine), Anwendungsverknüpfungen für Sie durchzuführen - was mehrere Abfragen bedeutet und die Ergebnisse dann den richtigen Dokumenten zuordnet - das ist teuer. Fragen Sie sich also bitte:„Ist das das richtige Tool für den Job? "
Ihre Beobachtungen sind jedoch korrekt - standardmäßig select_related()
geht nur eine einzige Beziehung herunter, so dass es für ein Benutzerobjekt nur die erste Gruppe von Freunden dereferenziert und nicht ihre Freunde. Sie können die Tiefe ändern, indem Sie sie an select_related(max_depth=2)
übergeben .