如何用get_or_create覆盖mongoengine DictField?

时间:2015-01-14 14:11:10

标签: mongoengine

我使用mongoengine的DictField来存储对象的用户权限:

permissions = mongoengine.DictField(field=mongoengine.ListField(field=mongoengine.StringField(choices=ALL_PERMISSIONS)))

在实践中看起来像:

permissions = {
    'user1id': ['VIEW'],
    'user2id': ['VIEW', 'EDIT']
}

因此permissions['user1id']会返回['VIEW']permissions['user3id']会提升KeyError

我想覆盖DictField的默认行为,以便permissions['user3id']返回[]。此外,如果我可以使用permissions['user1id'] += 'VIEW'permissions['user2id'] -= 'VIEW'等内容,那就太棒了。

我尝试覆盖mongengine.DictField.__getitem__mongengine.DictField.__getattr__方法,但都没有被调用。

这是做这样的事情的正确想法吗?我错过了什么?

0 个答案:

没有答案