如何在Qweb中的Odoo 11中自定义报告?如何将数据从其他模型发送到qweb报告?

时间:2017-12-06 14:00:40

标签: report odoo qweb odoo-11

有人知道如何更改自定义报告中的文档来源吗?我需要从继承自我的模型的视图中加载数据集。列与模型相同,它只是一个数据过滤器。

3 个答案:

答案 0 :(得分:3)

在v11中,报告模块已与报告对象一起删除。因此,您将面临此错误。您必须从依赖中删除报告,因为它在基本模块中添加/合并。你可以在这里查看。

您可以使用report_action方法调用您的报告,如下所示:

self.env.ref('your_report_name').report_action(self, data=data)

希望这会帮助您并解决您的问题。

答案 1 :(得分:1)

Odoo 11

不再需要使用show()库。它已被弃用。你可以使用odoo.tools:

hide()

正如here

所解释的那样

你可以像Muhsin k在his answer

中所说的那样发送数据
odoo.report

以前的Odoo版本

您拥有所有文档here。无论如何,如果你想自定义可以在报告中使用的数据,你可以使用这样的方法:

from odoo.tools import report

模型self.env.ref('your_report_name').report_action(self, data=data) 是您想要获取信息的模型

继承Qweb模板

标记from odoo import api, models class ParticularReport(models.AbstractModel): _name = 'report.module.report_name' @api.model def render_html(self, docids, data=None): report_obj = self.env['report'] report = report_obj._get_report_from_name('module.report_name') custom_data = self.env['model.name'].get_data() docargs = { 'doc_ids': docids, 'doc_model': report.model, 'docs': self, 'custom_data': custom_data, } return report_obj.render('module.report_name', docargs) 是某些视图的快捷方式。此处也可以使用model.name属性。大多数报告都是以这种观点构建的:

template

答案 2 :(得分:0)

render_html被功能get_report_values代替:

    @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,
        }