有两种解决方案可以满足您的要求:
- 如果您只需要一个表单视图的这种行为,那么简单如下:
只需添加style
标签来击败css selector
产生于Odoo
<style>
.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled {
background: yellow;
}
.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled::after {
border-left-color: yellow;
}
</style>
...
...
<field name ="state" widget="statusbar">
这里我用的是同样的css selector
因为它是在之后加载的Odoo selector
这是使用过的,请注意我的状态裸按钮有.disabled
类,因为它是readonly
我认为你必须改变这一点clickabe= 'True'
意味着它不是只读的。
- 如果你想在这里为你的所有模型使用这个,你需要使用
css file
并将其添加到 asset_backend 模板中,确保您的选择器击败 Odoo 选择器。
<template id="assets_backend" name="backend" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<link rel="stylesheet" href="/your_addon_name/static/src/css/your_css_file_name.css"/>
</xpath>
</template>
现在我不知道你想如何准确地改变颜色在这里,你需要处理CSS
选择右元素,
例如,如果你想使状态栏颜色blue
仅当"new"
值为selected
, 算你走运
Odoo展现价值selected
在属性中data-value
这不会因翻译而改变。
.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="new"] {
background: blue;
}
.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="new"]::after {
border-left-color: blue;
}
这是在 Odoo 11 中,当我检查该元素时,我注意到的是:
- 所选状态有等级
btn-primary
其余的有btn-default
- 只读有属性
disabled="disabled"
和班级disabled
只是为了表明这项工作这是我所拥有的屏幕截图,您可能会产生一些副作用,当您打开一些record
in popup
和这个form
仍然显示在网页中,如果有记录,这也会影响显示的记录status
bare widget
,因为style tag
将removed当。。。的时候form
视图是removed从网页。
Edits:
假设您的选择有两个值:新的、有效的
如果选择,则新颜色为蓝色,如果选择绿色,则颜色有效
<style>
.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="new"] {
background: blue;
}
.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="new"]::after {
border-left-color: blue;
}
.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="progress"] {
background: blue;
}
.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="progress"]::after {
border-left-color: blue;
}
.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="cancel"] {
background: red;
}
.o_form_view .o_form_statusbar > .o_statusbar_status > .o_arrow_button.btn-primary.disabled[data-value="cancel"]::after {
border-left-color: red;
}
</style>
...
...
...
<field name="state" .....>
这都是关于选择领域data-value
希望你能明白。这比处理 javascript 更容易。