Odoo搜索视图中调整搜索面板条目显示顺序的技术问询
调整Odoo搜索面板条目显示顺序的解决方案
核心思路:从字段定义或搜索视图配置入手
Odoo搜索面板里的状态类筛选条目,默认优先级是模型中selection字段的定义顺序,其次是搜索视图中filter标签的排列顺序。
方法1:修改模型中selection字段的定义顺序
找到对应模型的状态字段(比如state),直接调整selection列表里的选项顺序,改成你需要的distribution、awaiting approval、done:
state = fields.Selection([ ('distribution', 'Distribution'), ('awaiting_approval', 'Awaiting Approval'), ('done', 'Done'), ], string='Status', default='distribution')
修改后重启Odoo服务并更新模块,搜索面板的筛选顺序会自动同步这个定义顺序。
方法2:调整搜索视图中的filter排列顺序
如果是自定义的搜索筛选器(而非默认的selection字段自动生成的筛选),直接在搜索视图XML里调整<filter>标签的顺序:
<search> <!-- 按期望顺序排列filter --> <filter name="filter_distribution" string="Distribution" domain="[('state', '=', 'distribution')]"/> <filter name="filter_awaiting_approval" string="Awaiting Approval" domain="[('state', '=', 'awaiting_approval')]"/> <filter name="filter_done" string="Done" domain="[('state', '=', 'done')]"/> <!-- 其他搜索组件 --> </search>
更新模块后,搜索面板的筛选条目会按这个顺序显示。
为什么之前的方法没生效?
- Group By/Order By是针对列表数据的排序逻辑,不影响搜索面板的筛选条目顺序;
- 单独创建compute类型的sequence字段,若未关联到筛选条目的排序逻辑,自然不会生效——Odoo不会自动将sequence字段应用到搜索面板的筛选排序上。
内容的提问来源于stack exchange,提问作者Boris Veselov
相关产品推荐
相关产品推荐

