如何在Odoo视图中设置默认过滤器?
将自定义过滤器设为Odoo默认过滤器的方法
嘿,我来帮你搞定把这个自定义部门过滤器设为默认的事儿~在Odoo里有两种常用的实现方式,我给你详细拆解下:
方法1:通过列表动作配置默认过滤器
最常用的方式是找到对应员工模型的列表动作(就是你打开员工列表时触发的那个动作),在它的context里添加默认过滤器的配置。
你需要添加一段类似这样的XML代码(如果已经有这个动作的定义,就修改对应的context字段就行):
<record id="employee_action" model="ir.actions.act_window"> <field name="name">Employees</field> <field name="res_model">employee</field> <field name="view_mode">tree,form</field> <!-- 关键:添加这个context,指定默认激活你的过滤器 --> <field name="context">{'search_default_dept_search': 1}</field> </record>
这里的search_default_后面要跟上你过滤器的name属性值(也就是你代码里的dept_search),设置为1就表示每次打开这个视图时,默认会自动激活这个过滤器。
方法2:直接在搜索视图里配置默认值
如果不想修改动作,也可以直接在你已经创建的搜索视图里添加默认配置,修改后的代码是这样的:
<record id="dept_search_view" model="ir.ui.view"> <field name="name">employee.search.view</field> <field name="model">employee</field> <field name="arch" type="xml"> <search string="dept_search"> <!-- 新增defaults节点,指定默认启用你的过滤器 --> <defaults> <field name="dept_search" eval="True"/> </defaults> <filter string="Department" name="dept_search" domain="[('e_dept', 'in', ['HR','Audit'])]"/> </search> </field> </record>
这里的<field>的name要和过滤器的name完全一致,eval="True"就会让这个过滤器默认被激活。
小提示
- 要确保你的这个搜索视图已经被正确关联到员工模型的视图体系里哦,如果是继承已有搜索视图的话,记得用
inherit_id属性来继承修改,而不是直接新建(如果原模型已经有搜索视图的话)。 - 两种方法选一种就行,不用重复配置~
内容的提问来源于stack exchange,提问作者Mingg Lex
相关产品推荐
相关产品推荐

