我有一个之前不允许继承的MongoEngine文档。然后我想继承它,所以我设置了{allow_inheritance:True}
。一旦我这样做,那么在调用<myModel>.objects
时,该模型的现有文档就不再出现了。如果我暂时设置{allow_inheritance:False}
,那么文档会回来。为什么会这样?
我使用MongoEngine verison 0.8.7
答案 0 :(得分:1)
想出来。使用allow_inheritance
时,MongoEngine在基础文档中存储一个特殊的_cls
字段,其中包含类或派生类的名称。因此,对于BaseClass
,它会将"BaseClass"
存储为值,而对于DerivedClass
,它会将"BaseClass.DerivedClass"
存储为值。但是,如果最初未设置allow_inheritance
,则不会设置此特殊_cls
字段。因此,在设置allow_inheritance
之后,我必须手动(而不是通过mongoengine)进入mongo字段并执行update
以添加_cls
字段BaseClass
值,然后文件再次出现。