2
在mongoengine中,如果Document从另一个Document类继承,则会应用_cls
属性,将其标识为子类的实例。所有从同一个超类继承的对象都存储在同一个集合中。标记从超类继承的类mongoengine
Supe(Document):
pass
Sub(Supe):
pass
而Sub的实例将有_cls="Supe.Sub"
。由于这是一个mongoengine约定,当从集合中抽取对象并返回为JSON时,_cls
不会传递。当然,我总是希望与查询相匹配的对象,但有时我想用不同的方式显示不同的子类,并采取措施查看它们是否具有子类特定的属性。
难道是正确标注子是这样的:
Sub(Supe):
kind = StringField(default='sub')
...
这让我觉得我缺少继承mongoengine做它的方式,或至少点。