大家好。 尝试制作自定义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'
有人可以帮我吗?感谢任何帮助。
答案 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)