在mongoengine中,如果一个文档从另一个文档类继承,它会得到一个应用于它的_cls
属性,该属性将它标识为子类的实例。从同一超类继承的所有对象都存储在同一集合中。你知道吗
Supe(Document):
pass
Sub(Supe):
pass
Sub的实例将具有_cls="Supe.Sub"
。由于这是一个mongoengine约定,当从集合中提取对象并作为JSON返回时,_cls
不会被传递。当然,我总是想要与查询匹配的对象,但有时我想以稍微不同的方式显示不同的子类,并尝试查看它们是否具有特定于子类的属性。你知道吗
给子类贴上这样的标签是否合适:
Sub(Supe):
kind = StringField(default='sub')
...
这让我觉得我错过了继承的意义,或者至少是mongoengine的方式。你知道吗
当然
_cls
键可以从数据库中检索,您可以使用它对对象进行分类。你知道吗是的,为什么不呢?当你需要额外的信息是可以存储它,以符合你的应用程序逻辑。但是我认为您不需要这个,因为您可以访问
_cls
属性。你知道吗相关问题 更多 >
编程相关推荐