我使用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__
方法,但都没有被调用。
这是做这样的事情的正确想法吗?我错过了什么?