在mongoengine中获取动态集合名
这里有个场景。我有一个叫做 Permission 的模型。假设它长这样:
class Permission(Document):
meta = {'collection': 'permission'}
permission = DictField()
owner = ReferenceField('user')
这个模型是从 mongoengine 的 Document 类继承来的。所以当我保存这个模型的一个实例时,数据库里会自动创建一个叫做 permission 的集合。
我想要能够动态地改变这个集合的名字。比如说,如果我有一个 Contacts 模型,想要保存这个 Contacts 模型的权限,我就不想把它放到 permission 这个集合里,而是希望能保存到一个叫做 contact_permission 的单独集合里。
我使用了 mongoengine 的 feature/dynamic_collection_naming 分支,但我还没搞明白怎么让它工作。我尝试了这个:
p = Permission()
...
p.meta['collection'] = 'contact_permission'
p.save()
但是这个方法不行。你能帮我一下吗?
1 个回答
2
这不是动态集合命名的正确用法。快速查看你提到的分支中的提交记录,可以看到这个提交,它展示了如何使用它:
https://github.com/hmarr/mongoengine/commit/c62b6321adaba6c3eb54ce2dc2c1bd3069568399