我有几个comples mongo模型。例如,一个User
引用具有某些属性的Role
。现在,当我检索用户时,我希望用引用的角色对象(而不是对象ID)填充角色属性。
from mongoengine import *
connect('test_database')
class Role(Document):
name = StringField(required=True)
description = StringField(required=True)
class User(Document):
role = ReferenceField(Role, reverse_delete_rule=DENY)
r = Role(name='test', description='foo').save()
User(role=r).save()
print(User.objects().select_related()[0].to_mongo().to_dict())
# prints: {'_id': ObjectId('5c769af4e98fc24f4a82fd99'), 'role': ObjectId('5c769af4e98fc24f4a82fd98')}
# want: {'_id': '5c769af4e98fc24f4a82fd99', 'role': {'name' : 'test', 'description' : 'foo'}}
对于任何复杂的mongoengine对象,我该如何实现?
答案 0 :(得分:0)
Mongoengine并没有提供任何现成的东西,但是您可以在Document类上定义一个方法(例如to_dict(self)),或者使用诸如marshmallow-mongoengine之类的序列化库