在Qweb的Odoo 11中自定义报表,可以按照以下步骤进行:
.xml
为后缀。<t t-foreach="records" t-as="record">
)来迭代和显示数据。<span t-field="record.field_name"/>
)来引用其他模型的数据。以下是一个示例的Qweb报表模板文件:
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<template id="report_custom_template">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="doc">
<div class="page">
<h1>Custom Report</h1>
<table class="table table-condensed">
<thead>
<tr>
<th>Field 1</th>
<th>Field 2</th>
</tr>
</thead>
<tbody>
<tr t-foreach="doc.records" t-as="record">
<td><span t-field="record.field1"/></td>
<td><span t-field="record.field2"/></td>
</tr>
</tbody>
</table>
</div>
</t>
</t>
</template>
</data>
</odoo>
在上述示例中,我们创建了一个名为report_custom_template
的报表模板,它包含一个表格,用于显示其他模型的数据。通过使用<span t-field="record.field_name"/>
,我们引用了其他模型的字段数据。
要将其他模型的数据发送到Qweb报表,需要在生成报表的方法中获取所需的数据,并将其传递给报表模板。可以通过在模块中创建一个报表控制器方法来实现这一点。以下是一个示例:
from odoo import http
from odoo.http import request
class CustomReportController(http.Controller):
@http.route('/custom_report', type='http', auth='user')
def custom_report(self):
records = request.env['other.model'].search([]) # 获取其他模型的数据
docargs = {
'docs': records,
}
return http.request.render('module_name.report_custom_template', docargs)
在上述示例中,我们创建了一个名为custom_report
的控制器方法,该方法获取了other.model
模型的数据,并将其传递给报表模板。最后,使用http.request.render
方法将数据渲染到报表模板中。
请注意,上述示例中的module_name
应替换为实际模块的名称。
这是一个简单的示例,你可以根据实际需求和数据模型的复杂性来自定义报表。关于Qweb报表的更多详细信息和高级用法,请参考Odoo官方文档。
领取专属 10元无门槛券
手把手带您无忧上云