Odoo过滤器多个字段加载

Odoo过滤器多个字段加载,odoo,odoo-8,Odoo,Odoo 8,在我的模块中,我有一个manyOne字段,用于为特定任务选择工人。根据该字段只显示当前用户部门的工作人员的要求。这就是代码 _columns = { 'employee_id': fields.many2one('hr.employee', 'Employee'), } 我的问题是如何对加载的字段执行这种过滤?我尝试在视图xml中的域中使用函数字段。但似乎函数字段在保存特定记录时得到了它的值 我还尝试将域添加到字段本身,这里get_current_user_department是一个

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

 _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


有什么建议可以使这项工作顺利进行吗?谢谢

您必须定义一个新的manyOne字段来保存当前的用户部门ID,并使用默认的获取方法在加载时输入部门的值。
然后,您可以将此字段放在域中,以筛选与用户在同一部门的员工。

您必须定义一个新的manyOne字段以保存当前用户部门ID,并在加载时使用默认的\u get方法输入部门值。
然后,您可以将此字段放在域中,以筛选与用户在同一部门的员工。

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

default_department_id = fields.Many2one('employee.department', 
                                        string='My User',
                                        default='get_department') 
现在您需要为设置默认部门创建函数

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

您还可以选择一个字段来存储当前用户部门,您可以设置当前用户部门的默认值

default_department_id = fields.Many2one('employee.department', 
                                        string='My User',
                                        default='get_department') 
现在您需要为设置默认部门创建函数

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

谢谢是的,我尝试了一个整型字段,它可以工作!!问题是该字段也会保存在数据库中。我们可以停止吗?将视图中的“department\u id”字段设置为只读,但不会保存。可以,但我看不到其他解决方案。它只是DB表中的一个新列,但总是空的,所以DB上没有更多的大小。我明白了。问题是该类中还有其他几个过滤。我正在寻找一种方法,可以在运行时设置域或id列表,而无需为每个过滤创建额外的列。非常感谢,所以您可以使用fields.function进行过滤。这里有一个例子:谢谢。是的,我尝试了一个整型字段,它可以工作!!问题是该字段也会保存在数据库中。我们可以停止吗?将视图中的“department\u id”字段设置为只读,但不会保存。可以,但我看不到其他解决方案。它只是DB表中的一个新列,但总是空的,所以DB上没有更多的大小。我明白了。问题是该类中还有其他几个过滤。我正在寻找一种方法,可以在运行时设置域或id列表,而无需为每个过滤创建额外的列。非常感谢,所以您可以使用fields.function进行过滤。这里有一个例子: