gpt4 book ai didi

python - get_pdf api.v8 Odoo。我应该发送什么参数作为 "records"

转载 作者:行者123 更新时间:2023-12-01 03:48:07 24 4
gpt4 key购买 nike

在record.py的源代码中我发现

@api.v8
def get_pdf(self, records, report_name, html=None, data=None):
return Report.get_pdf(self._model, self._cr, self._uid, records.ids,
report_name, html=html, data=data, context=self._context)

我在自定义模块中继承了“记录”。我定义了一个这样的按钮:

<record id="report_maker_form" model="ir.ui.view">
<field name="name">Impression</field>
<field name="model">cust_report</field>
<field eval="1" name="priority"/>
<field name="arch" type="xml">
<form>
<header>
<button string="Envoyer le rapport" type="object" name="send_report_cust"/>
</header>
<sheet>
<group>
<field name='date'/>
</group>
</sheet>
</form>
</field>
</record>

函数send_report_cust在继承的report.py中是这样定义的。

@api.one
def send_report_cust(self):
#self.pool.get('report').get_pdf(self, None, "report_vote_document", None, None)
self.get_pdf(None, "report_vote_document", None, None)

所以“report_vote_document”是我的report_name。我只是测试用最少的模板创建报告。 report_vote_document 还不需要任何具体记录,它只是模板格式的测试文本。所以我在 get_pdf 的参数中作为“记录”发送:“无”。我收到此错误:

AttributeError: 'NoneType' object has no attribute 'ids'

这是一个明显的错误,因为 get_pdf 的正文中需要“记录”,但我不知道这些记录应该是什么。谁能告诉我这个“记录”里应该有什么。我应该发送什么?

编辑:我正在尝试调用 get_pdf,但我提供给它的参数有问题。

这是我所做的:

@api.one
def send_report_cust(self):
self.get_pdf(self, "my_report_name", "my_report_template", None)

我也在最后一行尝试过这个。

self.get_pdf(**my_model_name** , "my_report_name", "my_report_template", None)

我得到的错误是:

File "/usr/lib/python2.7/dist-packages/openerp/addons/report/models/report.py", line 508, in _get_report_from_name
idreport = report_obj.search(cr, uid, conditions)[0]
IndexError: list index out of range

我尝试在“report/models/report.py”中的模块“report”的源代码中使用一些 pdb.set_trace 来获取错误。我使用“send_report_cust”(让我们称之为案例 A)和报告的基本自动使用(案例 B)与(可以工作,但不允许我拥有自己的按钮并在之前和之前进行一些更改)进行了测试在同一函数中创建 pdf 之后。)

首先在get_pdf@api.v8中,这表明一切都正确。但是这个 get_pdf 调用了 get_pdf@api.v7 。在这一行中,错误发生在这一行:

report = self._get_report_from_name(cr, uid, report_name)

所以,我再次进入 _get_report_from_name 并使用 pdb.set_trace()。

整个函数运行正常,每个变量在情况 A 中的值与情况 B 中的值完全相同,但是当 _get_report_from_name 转到行时

idreport = report_obj.search(cr, uid, conditions)[0]

错误发生在情况 A 上,但没有发生在情况 B 上。

所以我做了“print report_obj.search(cr,uid,conditions)”,这是案例A的一个空列表(这是错误描述的内容,但我不明白)和一个包含一个int的案例列表B. 我检查了用 pdb.set_trace() 测试的 3 个函数中的每一个变量,一切都是相同的。

最佳答案

记录是对象形式的数据库条目。例如account.invoice:当您按下发票上的打印按钮时,它将成为报表的记录。在您的示例中,self 将是您按下按钮的模型 cust_report 模型的记录。

每个 Odoo 报告都是为模型定义的。打印时至少需要模型的一条记录。

关于python - get_pdf api.v8 Odoo。我应该发送什么参数作为 "records",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38656347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com