问题描述
我正在自定义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])
我收到以下错误:
当我打印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)])
语法中缺少一部分:将圆括号括在域中。