在OpenERP rep中添加多个对象

2024-05-13 20:20:59 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

set_context or (self.localcontext.update())

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

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

编辑:

测试解析器中的对象

^{pr2}$

在rml文件里

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

  </story>
</document>

但这会抛出一个错误“强制到Unicode:needstring或buffer,tuple found”。如何在rml中显示自定义列表?在

谢谢。在


Tags: 数据对象引擎服务器web应用程序报表报告
3条回答

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

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

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

^{pr2}$

其中_get_myrows_from_csv返回例如字典的列表。在

在RML文件中:

<story>
    <section>
        <para>[[ repeatIn(products(), 'p') ]]</para>
        <blockTable colWidths="100.0,100.0" >
            <tr>
                <td>
                    <para>[[p.name]]</para>
                </td>

                <td>
                    <para>[[p.list_price]]</para>
                </td>
            </tr>
        </blockTable >
    </section>
</story>

在报表分析器中:

^{pr2}$

我希望它会有用。在

除了在RML文件中使用结果(一个字典),您做的一切都是正确的。试试看

[[ g['first'] ]]

而不是

^{pr2}$

问题是您试图以对象属性的形式访问字典值。在

相关问题 更多 >