Odoo 在加载时过滤 many2one 字段

Odoo Filter many2one field on load

在我的模块中,我有一个 many2one 字段供 select 工作人员执行特定任务。根据要求该字段只显示当前用户所在部门的员工。就是这个代码,

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

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

我还尝试将域添加到字段本身,这里 get_current_user_department 是一个函数 returns 部门 ID

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

这会产生以下错误,

TypeError: 不是 JSON 可序列化的

有什么建议可以使这项工作成功吗?谢谢

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

也可以取一个字段,用于存储当前用户部门,可以设置当前用户部门的默认值。

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)]
       "/>