如何根据odoo中的组过滤many2one字段

how to filter a many2one field based on groups in odoo

我有一个引用 res.users 模型的 many2one 字段。我有两个组,经理和用户。基于组,我如何过滤用户。这样 many2one 字段只给出经理或用户?

我分享一个答案。检查它是否有用。 (我没试过)

在odoo中创建群组时,可以在创建用户的同时select相应的群组。为此,odoo 将自动创建一个 selection 场,类似于 sel_group_14_15。例如,如果有两个组,比如 User 和 Manager(如您的情况)。对于此 selection 字段,用户的键值可能是 14,经理键值可能是 15。因此要基于组进行过滤,请在域中使用此字段。由于此字段是 res.users 的一部分,您可以直接在域中使用此字段。

例如参考这个。

domain=[('sel_group_14_15','=',14)] --- for filtering users
domain=[('sel_group_14_15','=',15)] ---- for filtering manager

设置这些过滤器的最佳方式如下:

user  = fields.Many2one(comodel_name='res.users', string="User", domain="[]")

@api.onchange('some_field')
@api.model
def set_domain(self):
    group = self.env.ref(module_name.group_xml_id)    
        users = []
        for user in group.users:
            users.append(user.id)

        return {'domain':{'user':[('id','in',users)]}}