首先一个前提是 odoo 默认情况下 一个menu 只能绑定一个action 而这个action中只有一个domain,而我们的需求是需要点击菜单,然后根据用户所属的组的不同而选择不同的action,实现动态过滤的目的。
为什么不用record rule?因为record rule不仅限制了读,还限制了写,波及范围太广这里的目的只有一个,不让用户看见过滤的数据,而在某些内部逻辑运算时,仍能够访问到那些record。
在ir_values对象中添加一个group_id字段用于过滤用户组,然后根据该字段选择符合条件的action进行绑定。
用户组 A 对应的绑定
用户组 B 对应的绑定
用户组 A 使用的Action 包含了一种过滤的条件
用户组 B 的过滤条件为空 即能看到所有的记录。
注意事项
若 用户 同时隶属于A和B组,那么使用哪一个action是不确定的,要根据绑定的先后顺序而定。
若存在多个没有指定组的绑定关系,那么选择的action也与绑定的先后顺序有关。
若同时存在指定组的绑定和 没有指定组的绑定,组的用户使用指定组的action,非组用户使用没有绑定组的action。