我想在MongoEngine中保存并加载多态类型的异构列表。 我理想中想要的是:
from mongoengine import Document, EmbeddedDocument, IntField, StringField
class BaseEmbedded(EmbeddedDocument):
meta = {'abstract': True}
class FooEmbedded(BaseEmbedded):
an_int = IntField()
class BarEmbedded(BaseEmbedded):
a_string = StringField()
class HasList(Document):
heterogeneous_list = ListField(EmbeddedDocumentField(BaseEmbedded))
has_list = HasList()
has_list.heterogeneous_list = [FooEmbedded(an_int=3), BarEmbedded(a_string='bar')]
has_list.save()
HasList.objects(id=has_list.id)
问题是在保存EmbeddedDocument时,它的特定多态类型丢失,因此没有足够的数据来重建我的原始子类:
^{pr2}$与保存顶级文档时不同,文档的特定类的名称是数据库中集合的名称。在
我可以使BaseEmbedded
成为DynamicEmbeddedDocument
,为每个子类型添加一个具有适当值的“type”StringField
,并根据类型字段重建列表元素对象。在
有没有我没想到的更好的解决办法?在
将JSON映射到类是Mongoengine所做的,并且也支持嵌入文档。 您需要在嵌入文档的meta中设置allow\u inheritance=True。在
相关问题 更多 >
编程相关推荐