我是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模板中使用键和值查看整个对象。此外,有人可以指导我这个对象&#34; docs&#34;是定义。
我真的很感激。
谢谢,
答案 0 :(得分:1)
stock.picking(1,)
是一个单独的对象,因此它没有字典所具有的键和值。所以我想你想要看到的是对象的属性,如id,name等等
你可以使用dir
函数来做到这一点,它相当于php中对象的print_r
(不是真的),
<t t-foreach="docs" t-as="o">
<t t-esc="dir(o)" />
这将打印出该对象具有的所有属性,如果您想查看特定属性,例如您可以执行此操作
<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('__')}" />
答案 1 :(得分:0)
有时候,我们对于在网站Odoo v12中如何打印特定对象的字段有些迷茫,您可以使用简单的代码来显示整个字段。这是我为对象论坛做的事情:
<t t-foreach="forums.sorted(reverse=True)" t-as="forum">
<t t-esc="forum._fields" />
</t>
答案 2 :(得分:0)
根据@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>