Wenn ein Dokument in einer Mongoengine von einer anderen Dokumentklasse erbt, wird ein _cls
Attribut zugewiesen, das es als Instanz der Unterklasse identifiziert. Alle Objekte, die von derselben Superklasse erben, werden in derselben Sammlung gespeichert.Kennzeichnung einer Klasse, die von Superklasse erbt, mongoengine
Supe(Document):
pass
Sub(Supe):
pass
Und Instanz von Sub hätte _cls="Supe.Sub"
. Da es sich um eine Mongoengine-Konvention handelt, wird _cls
nicht weitergegeben, wenn ein Objekt aus der Auflistung abgerufen und als JSON zurückgegeben wird. Natürlich möchte ich immer die Objekte, die mit der Abfrage übereinstimmen, aber manchmal möchte ich verschiedene Unterklassen auf leicht unterschiedliche Weise anzeigen und habe herausgefunden, ob sie ein Unterklassen-spezifisches Attribut haben.
Wäre es richtig sein Subklassen wie folgt zu beschriften:
Sub(Supe):
kind = StringField(default='sub')
...
Es macht mich das Gefühl, ich bin mit dem Punkt der Vererbung oder zumindest die Art und Weise es mongoengine tut fehlt.