ODOO 12 中 Many2many 的规则
Rules For Many2many in ODOO 12
我有一个上级部门,我有几个子部门,有些员工组织在他的部门下
所以我在调用部门的 res.user 模型中创建了一个 Many2many 字段。
class HrDepartment(models.Model):
_inherit = 'res.users'
dep_ids = fields.Many2many('hr.department', string='Department')
并且我为此制定了一个规则,当我在这个用户中选择一个部门时,用户看不到这些部门下的员工
<record model="ir.rule" id="employee_center_multi_department">
<field name="name">Employee Multi Department</field>
<field name="model_id" ref="model_hr_employee" />
<field name="groups" eval="[(4, ref('charity_center_groups.group_manager_center_department'))]" />
<field name="global" eval="True" />
<field name="domain_force">[('department_id.parent_id.id','=',[user.dep_ids.id])]</field>
</record>
当我选择一个部门时,它会完美地向我显示员工,但当我选择多个部门时,它会向我显示错误
ValueError: <class 'ValueError'>: "Expected singleton: hr.department(3, 4)" while evaluating
"[('department_id.parent_id.id','=',[user.dep_ids.id])]"
我找到了解决方案
需要在字段 many2many 中放置一个循环,
domain_force 工作完美
<field name="domain_force">['|',('department_id.parent_id.id','in',[x.id for x in user.dep_ids]),('id','in',[x.id for x in user.dep_ids])]</field>
我有一个上级部门,我有几个子部门,有些员工组织在他的部门下 所以我在调用部门的 res.user 模型中创建了一个 Many2many 字段。
class HrDepartment(models.Model):
_inherit = 'res.users'
dep_ids = fields.Many2many('hr.department', string='Department')
并且我为此制定了一个规则,当我在这个用户中选择一个部门时,用户看不到这些部门下的员工
<record model="ir.rule" id="employee_center_multi_department">
<field name="name">Employee Multi Department</field>
<field name="model_id" ref="model_hr_employee" />
<field name="groups" eval="[(4, ref('charity_center_groups.group_manager_center_department'))]" />
<field name="global" eval="True" />
<field name="domain_force">[('department_id.parent_id.id','=',[user.dep_ids.id])]</field>
</record>
当我选择一个部门时,它会完美地向我显示员工,但当我选择多个部门时,它会向我显示错误
ValueError: <class 'ValueError'>: "Expected singleton: hr.department(3, 4)" while evaluating
"[('department_id.parent_id.id','=',[user.dep_ids.id])]"
我找到了解决方案
需要在字段 many2many 中放置一个循环,
domain_force 工作完美
<field name="domain_force">['|',('department_id.parent_id.id','in',[x.id for x in user.dep_ids]),('id','in',[x.id for x in user.dep_ids])]</field>