在odoo 12中按项目筛选员工

问题描述

我正在自定义odoo项目模块,在该模块中,我们有将任务分配给员工的项目,我需要根据项目选择来删除员工,但是由于没有直接关系,我必须搜索与项目相关的所有任务,然后搜索员工。

到目前为止,这是我的模型:

class myModel(models.TransientModel):
    _name = "mymodule.mymodel"

    project_id = fields.Many2one('project.project',string="Project")
    task_id = fields.Many2one('project.task',string="Task",domain="[('project_id','=',project_id)]")
    employee_id = fields.Many2one('hr.employee',string="Assign To")

    @api.onchange('project_id')
    def _projecy_onchange(self):
        if not self.project_id.id:
            return {'domain': {'employee_id': []}}
        
        tasks = self.env['project.task'].search([('project_id',self.project_id.id)])
                
        user_ids = []
        for t in tasks:
            if t.user_id:
              user_ids.append(t.user_id.id)
        
       
        if len(user_ids)>0:
            employees = self.env['hr.employee'].search(['user_id','in',user_ids])
            return {'domain': {'employee_id': employees}}
        else:
            return {'domain': {'employee_id': []}}

我想搜索员工时遇到问题:

employees = self.env ['hr.employee']。search(['user_id','in', user_ids])

我收到以下错误

elif token [1] =='in',而不是token [2]:IndexError:元组索引输出 范围

当我打印user_ids是一个基本列表时,其ID类似于[9](单个元素,更明显地使我困惑)

我知道搜索可以用作 员工= self.env ['hr.employee']。search(['user_id','in',[9])

任何指导将不胜感激

解决方法

您对odoo的 search 方法的语法有误,

employees = self.env['hr.employee'].search([('user_id','in',user_ids)])

语法中缺少一部分:将圆括号括在域中。