ODOO 11报表,对象没有属性“ report_action”

时间:2018-11-02 13:11:20

标签: python-3.x odoo-11

大家好。 尝试制作自定义ODOO 11报告以将其保存为pdf。 报告模板(不包含任何值,仅用于测试目的)

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data>
        <template id="contract_template">
            <t t-call="web.html_container">
                <div class="article">
                    <h2>Report title</h2>
                    <p>Report 01</p>
                </div>
            </t>
        </template>
    </data>
</odoo>

如果我这样从XML调用此模板:

<report
   id="custom_template_1"
   model="res.partner.contract.wizard"
   string="Contract"
   report_type="qweb-pdf"
   name="client_contracts.contract_template"
   file="client_contracts.contract_template"
   menu="False"
/>

并添加按钮以查看它是否正常运行-它会生成报告。 但是,当我尝试使用python代码生成此报告时:

    def get_pdf_contract(self):
        context = self._generate_context()
        return self.env.ref('client_contracts.contract_template').report_action(self, data=context)

并添加按钮以查看:

<button string="Test pdf x" type="object" name="get_pdf_contract" />

当我按下此按钮时出现错误:

AttributeError: 'ir.ui.view' object has no attribute 'report_action'

有人可以帮我吗?感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

找到解决方案。 对于任何遇到相同错误/故障的人-解决方案。 只需跳过

return self.env.ref('client_contracts.contract_template').report_action(self, data=context)

part,然后将其替换为

return {'type': 'ir.actions.report','report_name': 'client_contracts.contract_template','report_type':"qweb-pdf",'data': context,}

其中context-先前生成的值dict,需要传递给模板。 client_contract-模块名称,conrtact_template-模板名称

答案 1 :(得分:0)

替换

return self.env.ref('client_contracts.contract_template').report_action(self, data=context) 

return self.env.ref('client_contracts.custom_template_1').report_action(self, data=context) 

表示

return self.env.ref('module.report id').report_action(self,data=context)

答案 2 :(得分:0)

此堆栈溢出问题link的解决方案工作正常。

请注意:下面引用的report_id应该是指已声明报告名称,类型和文件...的报告,而不是template_id

return self.env.ref('module_name.report_id').report_action(self, data=context)