我想将数据传递到qweb报告并在报告中打印该数据。
python代码:
pdf = self.env['report'].sudo().get_pdf(self.ids, report_name, data={'test_variable': 'test_passed'})
报告模板:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<report id="my_module.report_id" model="my_module.report_model" string="Some Model Report" report_type="qweb-pdf" name="my_module.daily_report" file="my_module.daily_report_file" menu="False"/>
<template id="my_module.daily_report">
<t t-call="report.html_container">
<t t-call="report.internal_layout">
<div class="page">
<div class="header">
<h4>HEADER</h4>
<-- i want to see "test_passed" value below -->
<span t-esc="data.test_variable"/>
</div>
</div>
</t>
</t>
</template>
</data>
</odoo>
创建pdf时,看不到变量值。
答案 0 :(得分:0)
尝试使用此代码传递数据
from odoo import models, api
class ReportClassName(models.AbstractModel):
_name = 'report.module_name.report_name'
@api.model
def render_html(self, docids, data=None):
docargs = {
'doc_ids': self.ids,
'doc_model': self.model,
'data': data,
}
return self.env['report'].render('module_name.report_name', docargs)
您可以使用此自定义report.py作为报告传递数据作为数据,并将其调用
<t t-esc="data"/>
在模板中查看qweb报告中的数据。请参考此link以使用py和xml文件创建自定义报告。
在odoo11或odoo 12中,您可以使用get_report_values代替render_html
@api.model
def get_report_values(self, docids, data=None):
docs = self.env['model.name'].browse(docids)
return {
'doc_ids': docids,
'doc_model': 'model.name',
'docs': docs,
'lines': self.some_func(docs),
'data': data,
}
如果数据是某些函数,请在行和line ['field']中调用该函数以获取pdf中的数据