До Odoo 12 Существует различие между обычным представлением (дерево, форма и т. Д.) И представлением QWeb, что означает, что обычные представления нельзя смешивать с содержимым QWeb для оценки, как для отчетов и страниц веб-сайта.
Вы все еще можете получить то, что ищете, просто определив вычисляемое поле HTML, которое будет содержать результат HTML для оценки этого кода QWeb или непосредственного построения HTML без использования QWeb вообще.Или без QWeb просто генерируете HTML самостоятельно.
Например:
from lxml import etree
q1_percent_html = fields.HTML("Q1 Percent HTML", compute='_compute_q1_percent_html')
@api.depends('q1_percent')
def _compute_q1_percent_html(self):
for elem in self:
# QWeb version
t = etree.fromstring("""
<div>
<t t-if="q1_percent > 75">
<td style="background-color:#52be80"><t t-esc="q1_percent"/></td>
</t>
<t t-elif="'q1_percent' > 50 and 'q1_percent' < 75">
<td class="td_act" style="background-color:#f4d03f"><t t-esc="q1_percent"/></td>
</t>
<t t-elif="'q1_percent' < 50">
<td class="td_act" style="background-color:#e74c3c"><t t-esc="q1_percent"/></td>
</t>
<div>
""")
elem.q1_percent_html = self.env['ir.qweb'].render(t, {'q1_percent': elem.q1_percent})
# Python direct version
if elem.q1_percent >= 75:
background_color = "#52be80"
elif elem.q1_percent >= 50 and elem.q1_percent <= 75:
background_color = "#f4d03f"
elif elem.q1_percent <= 50:
background_color = "#e74c3c"
elem.q1_percent_html = """<div><td style="background-color:%s">%s</td></div>"""% (background_color, elem.q1_percent)
Используйте это поле в виде формы как:
<field name="q1_percent_html" nolabel="1" readonly="1"/>