mongoengineでは、Documentが別のDocumentクラスから継承する場合、そのサブクラスのインスタンスとして識別する_cls
属性が適用されます。同じスーパークラスを継承するすべてのオブジェクトは、同じコレクションに格納されます。Superclassから継承するクラスにmongoengine
Supe(Document):
pass
Sub(Supe):
pass
また、サブのインスタンスは_cls="Supe.Sub"
です。 mongoengineの規約であるため、コレクションからオブジェクトを取得してJSONとして返すときに_cls
は渡されません。もちろん、私はいつもクエリと一致するオブジェクトが欲しいですが、時々私は少し異なる方法で異なるサブクラスを表示したいのですが、サブクラス固有の属性を持っているかどうかを知ることに頼っています。
このようなサブクラスを標識する適切な次のようになります。
Sub(Supe):
kind = StringField(default='sub')
...
それは私が相続のポイントまたはmongoengineはそれをしない、少なくとも道を欠けているように私は感じさせます。