在odoo 12中按项目过滤员工

Filter employees by project in odoo 12

我正在自定义 Odoo 项目模块,在该模块中,我们有将任务分配给员工的项目,我需要根据项目选择创建员工下拉列表,但因为没有直接的relation 我必须搜索与项目相关的所有任务,然后搜索员工。

这是我目前的模型:

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' and not token[2]: IndexError: tuple index out of range

当我打印时 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)])

语法中遗漏的部分:域周围的圆括号。