Правила для Many2many в ODOO 12 - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть родительский отдел, и у меня есть несколько подотделов, и некоторые сотрудники объединяются под его отделом, поэтому я создаю поле Many2many в модели res.user, которая вызывает отделы.

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])]"  

1 Ответ

1 голос
/ 26 апреля 2019

Я нашел решение

нужно поставить петлю в поле 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> 
...