Условное форматирование Odoo представление формы - PullRequest
0 голосов
/ 01 марта 2019

Я хочу добиться нижеприведенного сценария.Пробовал разными способами, но не повезло.

<t t-if="q1_percent &gt; 75">
    <td style="background-color:#52be80"><field name="q1_percent" nolabel="1"/></td>
</t>
<t t-elif="'q1_percent' &gt; 50 and 'q1_percent' &lt; 75">
    <td class="td_act" style="background-color:#f4d03f"><field name="q1_percent" nolabel="1"/></td>
</t>
<t t-elif="'q1_percent' &lt; 50">
    <td class="td_act" style="background-color:#e74c3c"><field name="q1_percent" nolabel="1"/></td>
</t>

Я использую odoo 10. И приведенный выше код предназначен для просмотра формы.

Как мне этого добиться?Любые идеи, любая помощь наиболее ценится.Спасибо!

1 Ответ

0 голосов
/ 01 марта 2019

До 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 &gt; 75">
                    <td style="background-color:#52be80"><t t-esc="q1_percent"/></td>
                </t>
                <t t-elif="'q1_percent' &gt; 50 and 'q1_percent' &lt; 75">
                    <td class="td_act" style="background-color:#f4d03f"><t t-esc="q1_percent"/></td>
                </t>
                <t t-elif="'q1_percent' &lt; 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"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...