2015-08-05 2 views
1

В моем модуле у меня есть поле many2one для выбора работников для конкретной задачи. В соответствии с требованием, что поле должно отображать только рабочих в отделе текущего пользователя. Просто это код,Odoo Filter many2one field on load

_columns = { 
    'employee_id': fields.many2one('hr.employee', 'Employee'), 
} 

Моя проблема заключается в том, как выполнить такую ​​фильтрацию для поля при нагрузке? Я попытался использовать функциональное поле в домене в виде xml. но кажется, что функциональное поле получает свою ценность при сохранении конкретной записи.

Кроме того, я попытался добавить домен к самому полю, здесь get_current_user_department является функция возвращает Управление ИД

_columns = { 
    'employee_id': fields.many2one('hr.employee', 'Employee',domain=[('department_id.id','=',get_current_user_department)]), 
} 

Это порождает следующую ошибку,

TypeError: нет JSON сериализации

Любой предложение сделать эту работу? Спасибо

ответ

5

Также вы можете взять одно поле для хранения текущего отдела пользователей, вы можете установить значение по умолчанию для текущего пользовательского отдела.

default_department_id = fields.Many2one('employee.department', 
             string='My User', 
             default='get_department') 

Теперь вам нужно создать функцию для департамента по умолчанию.

После этого вам нужно написать в XML:

<field name="default_department_id" invisible="1"/> 
<field name="employee_id" 
     domain=" 
      [('department_id','=',default_department_id)] 
     "/> 
2

Вы должны определить новое многозначное поле, чтобы сохранить текущий идентификатор отдела пользователей и поместить значение отдела при загрузке с помощью метода default_get(). После этого вы можете поместить это поле в домен для фильтрации сотрудника, находящегося в том же отделе, что и пользователь.

+0

Спасибо. да, я пробовал с целочисленным полем, и он работает !! проблема в том, что поле также получает сохранение в базе данных. можем ли мы остановить это? – javatar

+0

Сделайте поле 'department_id' только для чтения, и оно не будет сохранено. –

+0

ОК. но для этого создается отдельный столбец. не так ли? – javatar