连续格式Odoo表单视图

时间:2019-03-01 06:30:36

标签: css xml forms odoo

我想实现以下方案。尝试了很多,但没有运气。

<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>

我正在使用odoo10。上面的代码用于表单视图。

我该如何实现?任何想法的任何帮助是最赞赏的。谢谢!

1 个答案:

答案 0 :(得分:0)

直到Odoo 12常规视图(树,窗体等)与QWeb视图之间存在差异,这意味着常规视图不能与要评估的QWeb内容(如报表和网站页面)混合使用。

您仍然可以通过简单地定义一个计算的HTML字段来获取您想要的内容,该字段将包含评估QWeb代码的HTML结果或直接构建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"/>