Odoo在加载时过滤many2one字段

时间:2015-08-05 07:10:28

标签: odoo odoo-8

在我的模块中,我有一个many2one字段来为特定任务选择worker。根据要求,字段应仅显示当前用户部门中的工作人员。这就是代码,

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

我的问题是如何在加载字段上执行此类过滤?我尝试在视图xml中使用域中的功能字段。但是在保存特定记录时,似乎功能字段会获得其值。

另外我尝试将域添加到字段本身,这里get_current_user_department是一个函数返回部门id

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

这会产生以下错误,

TypeError:不是JSON可序列化的

有任何建议使这项工作?谢谢

2 个答案:

答案 0 :(得分:2)

您必须定义一个新的many2one字段以保存当前用户部门ID,并使用default_get()方法将部门的值置于加载状态。 之后,您可以将此字段放在域中,以过滤与用户位于同一部门的员工。

答案 1 :(得分:2)

此外,您可以使用一个字段存储当前用户部门,您可以设置当前用户部门的默认值。

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

现在你需要为set default department创建函数。

之后你需要用XML编写:

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