我有一个以前不允许继承的MongoEngine文档。然后我想继承它,所以我设置了{allow_inheritance:True}。一旦我这样做了,在调用<myModel>.objects时,该模型的现有文档就不再出现了。如果我暂时设置{allow_inheritance:False},那么文档就会返回。为什么会这样?
我使用的是MongoEngine verison 0.8.7
发布于 2014-12-10 20:51:33
弄明白了。使用allow_inheritance时,MongoEngine会在基文档中存储一个特殊的_cls字段,其中包含类名或派生类的名称。因此,对于您的BaseClass,它将存储"BaseClass"作为值,对于您的DerivedClass,它将存储"BaseClass.DerivedClass"作为值。但是,如果最初没有allow_inheritance集,它就没有这个特殊的_cls字段集。因此,在设置allow_inheritance之后,我必须手动进入mongo字段(而不是通过mongoengine),执行一个update来添加带有BaseClass值的_cls字段,然后文档重新出现。
https://stackoverflow.com/questions/27410334
复制相似问题