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)]
"/>
在我的模块中,我有一个 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)]
"/>