第十七章 用户与组
我们在第一部分中简要地介绍过系统的用户与组的概念,但是并没有在编程意义上的深入探讨。其实用户(res.users)和组(res.group)是两个关于全局的重要对象,通常他们与系统的权限紧密相联。
用户
用户在系统中的对象是res.users
字段中的过滤
有时候,我们会有这样的需求,在某个引用了用户对象的Many2one字段中,对某个组的用户进行过滤,例如,这里有某个对象的字段engineer使用Many2one关联了用户这个对象,而此时用户想要这个字段只能显示某个组内的用户。
这种情况下,通常的domian写法已经不能满足我们的要求,因此组对象不是一个特定的值,需要依赖系统生成的ID,因此我们需要借助ref方法来动态获取这个组对象的id,我们可以将domian使用一个函数将其动态地返回。
def _get_enginneer_domain(self):
return [('groups_id','in',self.env.ref('juhui_purchase.group_purchase_test').id)]
engineer = fields.Many2one("res.users",string="工程师", compute=_get_enginneer_domain)
需要注意的是,这里的组必须是由xml定义的组,用户在系统中手动创建的组是不能满足要求的,因为他们没有xmlid,也就无法被ref方法获取。