gpt4 book ai didi

python - 在 OpenERP 报表中添加多个对象

转载 作者:太空宇宙 更新时间:2023-11-03 14:29:42 24 4
gpt4 key购买 nike

如何将多个对象传递给报告引擎?

我正在尝试创建自定义发票报告,我需要在其中附加来自其他应用程序的数据以显示在发票上。我可以使用 Web 服务将数据导入 OpenERP 服务器,但如何将其传递给报告引擎?也许是

set_context or (self.localcontext.update())

方法在这里很有用,因为它允许我将自定义变量传递给报告,但如何传递整个对象。

我从其他应用程序导入的本质上是一个巨大的表格,其中可能包含与当前合作伙伴相关的 100 条记录,我不需要将其保存在 OpenERP 数据库中,只需在生成发票时显示它即可。

编辑:

测试解析器中的对象

class test_invoice(report_sxw.rml_parse):
def __init__(self, cr, uid, name, context):
super(test_invoice, self).__init__(cr, uid, name, context=context)
self.localcontext.update({
'time': time,
'test_var': 'Worked!',
'get_list': self._get_list,
})


def _get_list(self):
result = []
ress = {'first': '1',
'second': '2',
}
result.append(ress)
return result

在rml文件中

...start of rml file
<section>
<para>
[[ repeatIn(get_list(), 'g')]]
[[ g.first ]]
</para>
</section>

</story>
</document>

但这会引发错误“强制转换为 Unicode:需要字符串或缓冲区,找到元组”。我们如何在 rml 中显示自定义列表?

谢谢。

最佳答案

您可以传递整个对象,只要 OpenERP(好吧,您运行 OpenERP 的 python)知道该对象。否则你必须以某种方式“代理”对象。使用 SQLAlchemy 从外部数据库获取数据可能是一个少数的解决方案。你可以处理这样的事情:

[...somewhere into your parser...]
self.localcontext.update({'external_rows': session.query(MyObject).filter_by(foo='baz')})

或者如果您正在管理 CSV 数据:

self.localcontext.updarte({'external_rows': self._get_myrows_from_csv()})

例如,_get_myrows_from_csv 返回字典列表。

关于python - 在 OpenERP 报表中添加多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13649207/

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