Генерация HTML и рендеринга в qweb - PullRequest
0 голосов
/ 08 июня 2018

Можно ли сгенерировать html в файле .py и отобразить в qweb?

<openerp>
    <data>
        <record id="paperformat_time" model="report.paperformat">
            <field name="name">Time</field>
            <field name="font_size">10</field>
        </record>

        <report id="time_qweb" model="hr_timesheet_sheet.sheet" string="Time" 
        report_type="qweb-pdf" name="time.report_time" file="time.report_time" />

        <record id="time_qweb" model="ir.actions.report.xml">
            <field name="paperformat_id" ref="time.paperformat_time" />
        </record>
      </data>
</openerp>

qweb    

<template id="report_time">
    <t t-call="report.html_container">
        <t t-foreach="docs" t-as="t">
            <span t-esc="t.__compute_html()" />
            <div class="page">
                <span t-field="t.html_text " />
            </div>
        </t>
    </t>
</template>

.py файл

class Time(models.Model):

   _inherit = 'hr_timesheet_sheet.sheet'

   html_text = fields.Html(string = 'Html')

   @api.one
   def _compute_html(self):
        html_value = "<h1>TEST</h1>" 
        html_value += "<h1>TEST 2</h1>"

        self.html_text = html_value

например.

html_value = "<h1> + employee_id.name + "</h1>" 
html_value += "<h1> + employee_id.phone + "</h1>"

теперь мне нужно рендеринг html_value в qweb вместо <div class="page"> put here html_value </div>

Теперь я сохраняю текст в базе данных, есть ли лучшее решение? ................................

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Вы можете попробовать это

<span t-raw="my_html_field"/>

Здесь my_html_field - ваши данные в формате html

0 голосов
/ 08 июня 2018

Да, вы можете, если у вас есть переменная с html-кодом, если вы используете t-esc или t-field, odoo напечатает ее как текст.

Если вы хотите ее отобразить, используйте.t-row

  <div t-raw="doc.some_attribute" > </div>

Или

   <t t-raw="doc.some_attribute" > </t>
...