В mongoengine, если документ наследуется от другого класса документа, он получает применимый к нему атрибут _cls
, который идентифицирует его как экземпляр подкласса. Все объекты, которые наследуются от одного и того же Суперкласса, хранятся в одной коллекции.Маркировка класса, который наследуется от суперкласса, mongoengine
Supe(Document):
pass
Sub(Supe):
pass
И экземпляр Sub будет иметь _cls="Supe.Sub"
. Поскольку это соглашение mongoengine, _cls
не передается, когда объект извлекается из коллекции и возвращается как JSON. Конечно, я всегда хочу, чтобы объекты соответствовали запросу, но иногда я хочу отображать разные подклассы несколькими способами и прибегать к тому, чтобы видеть, есть ли у них атрибут подкласса.
Подобает маркировать подклассы, как это:
Sub(Supe):
kind = StringField(default='sub')
...
Это заставляет меня чувствовать, что я пропускаю точку наследования или по крайней мере, на пути mongoengine это делает.