在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)])
语法中遗漏的部分:域周围的圆括号。
我正在自定义 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)])
语法中遗漏的部分:域周围的圆括号。