我正在与Odoo和Studio合作。
我想使用XML根据所选值格式化选择字段文本。
这是我已经尝试过的方法,但是完全没有效果:
<field name="my_status" string="Status" colors="orange:my_status == 'negotiation';green:my_status == 'signed';purple:my_status == 'internal'"/>
我也尝试过:
<field name="my_status" string="Status" decoration-success="my_status == 'signed'" decoration-danger="my_status == 'negociation'" decoration-muted="my_status == 'internal'"/>
您知道我无法正常工作吗?
编辑:我发现了这一点,我想我无法为任何字段设置颜色格式? https://github.com/odoo/odoo/blob/12.0/odoo/addons/base/rng/common.rng#L206
答案 0 :(得分:1)
如果要执行此操作,则需要CSS选择器。当您在浏览器中调查Element时 您有两种不同的表示形式。
在查看模式下,选择字段变为一个简单的跨度:
<span name="priority" class="o_field_widget">Non urgent</span>
在“编辑”模式下,选择字段是HTML输入:
<select class="o_input o_field_widget" name="priority" id="o_field_input_229">
<option value="false"></option>
<option value="0">Non urgent</option>
<option value="1">Normale</option>
<option value="2">Urgent</option>
<option value="3">Très urgent</option>
</select>
仅使用CSS无法基于其内部HTML选择元素。 如您所见,选项值随着语言的变化而变化 会发生变化,即使您执行(Jquery)之类的选择器
$(".o_field_widget[name='priority']:contains('Non urgent')")
一个法国用户访问该页面会发生什么?!!!
一种典型的方法是更改Odoo中选择小部件的行为(这不是一件容易的事)。 如果您真的需要这样做,请尝试在Odoo商店中找到任何应用,否则我看不到另一种方法。
答案 1 :(得分:1)
我找到了一种解决方法:
<field name="my_status" string="Status" style="color: red;" attrs="{'invisible': ['|',['my_status','=','signed'],['my_status','=','internal']]}"/>
<field name="my_status" string="Status" style="color: green;" attrs="{'invisible': ['|',['my_status','=','negotiation'],['my_status','=','internal']]}"/>
<field name="my_status" string="Status" style="color: purple;" attrs="{'invisible': ['|',['my_status','=','signed'],['my_status','=','negotiation']]}"/>