#python #odoo #odoo-12
#python #odoo #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 [1] == ‘in’, а не токен [2]: ошибка индекса: индекс кортежа вне диапазона
когда я печатаю user_ids, это базовый список с идентификаторами, что-то вроде [9] (один элемент, облако для меня более очевидно)
Я понимаю, что поиск может работать как employees = self.env[‘hr.employee’].search([‘user_id’,’in’, [9])
любые рекомендации будут оценены
Комментарии:
1.
employees = self.env['hr.employee'].search([('user_id','in', user_ids)])
сделайте это. — добавить кортеж внутри списка поиска.
Ответ №1:
У вас неправильный синтаксис метода поиска odoo, сделайте это так,
employees = self.env['hr.employee'].search([('user_id','in', user_ids)])
В вашем синтаксисе отсутствует часть: круглые фигурные скобки вокруг вашего домена.
Комментарии:
1. спасибо, я не уловил этого, нужно было увидеть это свежим взглядом