标记从超类mongoengin继承的类

2024-10-01 07:38:20 发布

您现在位置:Python中文网/ 问答频道 /正文

在mongoengine中,如果一个文档从另一个文档类继承,它会得到一个应用于它的_cls属性,该属性将它标识为子类的实例。从同一超类继承的所有对象都存储在同一集合中。你知道吗

Supe(Document):
    pass

Sub(Supe):
    pass

Sub的实例将具有_cls="Supe.Sub"。由于这是一个mongoengine约定,当从集合中提取对象并作为JSON返回时,_cls不会被传递。当然,我总是想要与查询匹配的对象,但有时我想以稍微不同的方式显示不同的子类,并尝试查看它们是否具有特定于子类的属性。你知道吗

给子类贴上这样的标签是否合适:

Sub(Supe):
    kind = StringField(default='sub')
    ...

这让我觉得我错过了继承的意义,或者至少是mongoengine的方式。你知道吗


Tags: 对象实例文档json属性方式pass标签
1条回答
网友
1楼 · 发布于 2024-10-01 07:38:20

"As it is a mongoengine convention, _cls is not passed along when an object is pulled from the collection and returned as JSON"

当然_cls键可以从数据库中检索,您可以使用它对对象进行分类。你知道吗

Would it be proper to label subclasses like this:

 Sub(Supe):
     kind = StringField(default='sub')

是的,为什么不呢?当你需要额外的信息是可以存储它,以符合你的应用程序逻辑。但是我认为您不需要这个,因为您可以访问_cls属性。你知道吗

相关问题 更多 >