You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Odoo的state_selection widget自定义颜色状态选项?

自定义Odoo看板状态选择组件实现指南

一、自行开发方案(难度低,推荐)

Odoo自带的state_selection组件可通过配置快速实现自定义颜色绑定,无需重写前端组件,步骤如下:

1. 状态-颜色映射规划

先给你的选择项对应目标颜色:

  • on_hold → 灰色
  • normal → 橙色
  • blocked → 红色
  • done 可默认绿色或按需调整

2. 调整XML视图代码

保留你的XPath替换逻辑,给字段添加options属性指定状态对应的样式标识:

<xpath expr="//field[@name='kanban_state']" position="replace">
    <field name="kanban_state_child" widget="state_selection" 
           options='{"states": {"on_hold": "gray", "normal": "orange", "blocked": "red", "done": "green"}}'/>
</xpath>

3. 适配项目模块看板样式(可选)

如果自带颜色样式和项目模块看板差异大,可在模块的static/src/css目录下创建kanban_state.css文件,自定义匹配样式:

/* 对齐项目看板状态的圆角、内边距样式 */
.o_state_selection .o_state_on_hold {
    background-color: #f0f0f0;
    color: #333;
    border-radius: 4px;
    padding: 2px 8px;
}
.o_state_selection .o_state_normal {
    background-color: #ff9800;
    color: #fff;
    border-radius: 4px;
    padding: 2px 8px;
}
.o_state_selection .o_state_blocked {
    background-color: #f44336;
    color: #fff;
    border-radius: 4px;
    padding: 2px 8px;
}
.o_state_selection .o_state_done {
    background-color: #4caf50;
    color: #fff;
    border-radius: 4px;
    padding: 2px 8px;
}

然后在模块的__manifest__.py中引入该CSS文件:

'assets': {
    'web.assets_backend': [
        '你的模块名/static/src/css/kanban_state.css',
    ],
},

二、现有模块推荐(若不想自行开发)

如果觉得自定义样式麻烦,可直接使用社区模块web_kanban_state_color,它支持在字段定义或视图中直接配置状态颜色,完全适配Odoo原生看板样式。

三、验证步骤

  1. 升级模块后刷新页面
  2. 打开看板视图,检查状态标签颜色是否符合预期
  3. 测试状态切换功能是否正常

内容的提问来源于stack exchange,提问作者Rahma Begag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 21:34:56