odoo 报告打印对象值
odoo report print object value
我是 odoo 的新手,学习了一些与报告相关的知识。我正在查看选股报告。我注意到它有一个名为 "docs" 的对象,值存储在该对象中。
因为我来自 PHP 背景,所以可以打印接收到的用于调试目的的对象,如下所示:
<?php print_r("object"); ?>
所以我尝试使用以下代码使用 QWeb 模板在 odoo 中打印相同的内容:
1. <t t-esc="docs" />
2. <t t-foreach="docs" t-as="o">
<t t-esc="o" />
3. <t t-foreach="docs" t-as="o">
<t t-esc="o_all" />
4. <t t-foreach="docs" t-as="o">
<t t-esc="o_value" />
5. <t t-foreach="docs" t-as="o">
<t t-esc="o_all" />
但是我无法打印整个对象,我只得到 stock.picking(1,)
有人可以帮助我如何在 qweb 模板中看到带有键和值的整个对象。此外,有人可以指导我定义此对象 "docs" 的位置。
非常感谢。
谢谢,
stock.picking(1,)
是单个对象,因此它没有字典所具有的键和值。所以我想你想看到的是对象的属性,比如 id、name 等等
你可以通过使用 dir
函数来做到这一点,这相当于 php 中对象的 print_r
(不是真的),
<t t-foreach="docs" t-as="o">
<t t-esc="dir(o)" />
这将打印出对象具有的所有属性,如果你想查看特定属性,如 id,你可以这样做
<t t-foreach="docs" t-as="o">
<t t-esc="o.id" />
dir
提供了更多信息,但您仍然可以通过一些小的修改获得与 php 的 print_r
相同的行为。例如
class Example:
whatever = 'whatever attribute'
something = 'something attribute'
ex = Example()
print({attribute: getattr(ex, attribute) for attribute in dir(ex) if not attribute.startswith('__')})
这里我使用字典推导来遍历 dir
返回的对象的所有属性,然后我使用 if 语句去除 dir 给我们的对象的所有额外信息,通常以两个下划线开头 (__
).
因此输出是一个以对象属性为键的字典,值是这些属性的内容
{'whatever': 'whatever attribute', 'something': 'something attribute'}
未经本人测试。但这也适用于 QWeb
<t t-foreach="docs" t-as="o">
<t t-esc="{attribute: getattr(o, attribute) for attribute in dir(o) if not attribute.startswith('__')}" />
有时我们有点迷茫如何在网站Odoo v12中打印特定对象的字段,您可以使用简单的代码来显示整个字段。这是我为对象论坛做的:
<t t-foreach="forums.sorted(reverse=True)" t-as="forum">
<t t-esc="forum._fields" />
</t>
根据@Diderh 的回答,了解如何显示对象的每个属性及其相关值:
<table>
<t t-foreach="product._fields" t-as="field">
<tr>
<td>
<t t-esc="field" />
</td>
<td>
<t t-esc="product[field]" />
</td>
</tr>
</t>
</table>
我是 odoo 的新手,学习了一些与报告相关的知识。我正在查看选股报告。我注意到它有一个名为 "docs" 的对象,值存储在该对象中。 因为我来自 PHP 背景,所以可以打印接收到的用于调试目的的对象,如下所示:
<?php print_r("object"); ?>
所以我尝试使用以下代码使用 QWeb 模板在 odoo 中打印相同的内容:
1. <t t-esc="docs" />
2. <t t-foreach="docs" t-as="o">
<t t-esc="o" />
3. <t t-foreach="docs" t-as="o">
<t t-esc="o_all" />
4. <t t-foreach="docs" t-as="o">
<t t-esc="o_value" />
5. <t t-foreach="docs" t-as="o">
<t t-esc="o_all" />
但是我无法打印整个对象,我只得到 stock.picking(1,) 有人可以帮助我如何在 qweb 模板中看到带有键和值的整个对象。此外,有人可以指导我定义此对象 "docs" 的位置。
非常感谢。
谢谢,
stock.picking(1,)
是单个对象,因此它没有字典所具有的键和值。所以我想你想看到的是对象的属性,比如 id、name 等等
你可以通过使用 dir
函数来做到这一点,这相当于 php 中对象的 print_r
(不是真的),
<t t-foreach="docs" t-as="o">
<t t-esc="dir(o)" />
这将打印出对象具有的所有属性,如果你想查看特定属性,如 id,你可以这样做
<t t-foreach="docs" t-as="o">
<t t-esc="o.id" />
dir
提供了更多信息,但您仍然可以通过一些小的修改获得与 php 的 print_r
相同的行为。例如
class Example:
whatever = 'whatever attribute'
something = 'something attribute'
ex = Example()
print({attribute: getattr(ex, attribute) for attribute in dir(ex) if not attribute.startswith('__')})
这里我使用字典推导来遍历 dir
返回的对象的所有属性,然后我使用 if 语句去除 dir 给我们的对象的所有额外信息,通常以两个下划线开头 (__
).
因此输出是一个以对象属性为键的字典,值是这些属性的内容
{'whatever': 'whatever attribute', 'something': 'something attribute'}
未经本人测试。但这也适用于 QWeb
<t t-foreach="docs" t-as="o">
<t t-esc="{attribute: getattr(o, attribute) for attribute in dir(o) if not attribute.startswith('__')}" />
有时我们有点迷茫如何在网站Odoo v12中打印特定对象的字段,您可以使用简单的代码来显示整个字段。这是我为对象论坛做的:
<t t-foreach="forums.sorted(reverse=True)" t-as="forum">
<t t-esc="forum._fields" />
</t>
根据@Diderh 的回答,了解如何显示对象的每个属性及其相关值:
<table>
<t t-foreach="product._fields" t-as="field">
<tr>
<td>
<t t-esc="field" />
</td>
<td>
<t t-esc="product[field]" />
</td>
</tr>
</t>
</table>