如何根据用户组为字段设置odoo域过滤器?

问题描述

我试图在特定组的字段上设置一个域,并向其他人开放以返回所有值

这是我做的

def _visit_domain(self):
    domain = []
    if self.env.user.has_group('sales_team.group_sale_salesman'):
        print("Hiiii")

        domain.append(('user_id.name','=',self.user_id.name))
        return domain
    else:
        domain.append(())
        return domain
user_id = fields.Many2one('res.users',string='Salesperson',default=lambda self: self.env.user)
visit_id = fields.Many2one('crm.visit','Visit',domain=_visit_domain )

它始终不返回任何内容,也永远不会打印HII

解决方法

为什么还要使用分组条件?我只会在visit_id"[('user_id','=?',user_id)]"上使用固定域。此域应该导致只查找与模型user_id中相同用户的访问,或者如果没有为所有访问提供user_id,则为该用户。

如果您要按组限制模型crm.visit(例如在模型sale.order中),请使用Odoo(ir.rule)的访问实用程序。 / p>

,

尝试一下 如果您想在visit_id字段的域中添加“ sales_team.group_sale_salesman”,我认为此解决方案可能适合您的情况。 visit_id = fields.Many2one('crm.visit','Visit',domain= lambda self: [("groups_id","=",self.env.ref("sales_team.group_sale_salesman").id)] )