[Odoo][Qweb]字典foreach,打印键和值
[Odoo][Qweb]Dictionary foreach, print key and value
有没有办法在循环 Qweb 中从 python 字典打印键和值?
例如,如果我有一个 return 字典的功能:
def get_informations(self):
mydico={'myfirstkey':1,'mysecondkey':2}
return mydico
然后,在 Qweb 报告中:
<t t-foreach="doc.get_informations()" t-as="l">
<tr>
<td class="text-right">
<t t-esc="l"/>
</td>
<td class="text-right">
<span t-esc="l_value"/>
</td>
</tr>
</t>
如何打印 key 和 value?
谢谢
2015 年 7 月 12 日更新:
感谢您的 return。
确切地说,当我输入
<t t-foreach="{'my': 'first', 'my2': 'second' }" t-as="v">
有效,我有类似的东西:
my first
my2 second
但是当我在foreach中使用一个函数时,输出完全相同,qweb无法将它分开,我有:
{'my': 'first', 'my2': 'second' }
{'my': 'first', 'my2': 'second' }
所以我决定另辟蹊径:
在我继承报告:
<t t-foreach="doc.tabTaxes" t-as="v">
<tr>
<td>
<span t-esc="v.name"/>
</td>
<td>
<span t-esc="doc.get_amount(v.name)[0]"/>
</td>
</tr>
</t>
在sale.order模型中继承:
@api.one
def get_amount(self, taxeNom):
total=0
for ligne in self.order_line:
for taxe in ligne.tax_id:
if (taxeNom == taxe.name):
try: total += ligne.price_reduce * (taxe.amount/100.)
except: total +=0
return "{0:.2f}".format(total)
@FTK,
鉴于您的函数正在将有效字典返回给 qWeb 模板,下面的代码应该可以完成这项工作:
<div id="wrap" class="oe_structure">
<t t-foreach="{'my': 'first', 'my2': 'second' }" t-as="v">
*<t t-esc="v"/> : <t t-esc="v_value"/></t>
</div>
并且您可以将 tr 放入循环中,这样它就会按您的预期创建 table 行,下面的代码将这样做:
<div id="wrap" class="oe_structure">
<table class="table table-bordered table-condensed">
<t t-foreach="doc.get_informations()" t-as="item">
<tr>
<td class="text-right">
<t t-esc="item"/>
</td>
<td class="text-right">
<t t-esc="item_value"/>
</td>
</tr>
</t>
</table>
</div>
您当然不需要 div 他们的要求。
希望这对你有帮助,
最佳,
- $as_all
被迭代的对象
- $as_value
当前迭代值,与列表和整数的 $as 相同,但对于映射它提供值(其中 $as 提供键)
- Warning
$as will be replaced by the name passed to t-as
此 Link 的引用:https://www.odoo.com/documentation/8.0/reference/qweb.html
我终于明白了如何使用 V9 了:
<tr t-foreach="o.get_list_taxe(o.id)[0]" t-as="taxe">
<t t-set="name" t-value="taxe['name']"/>
<t t-set="total" t-value="taxe['total']"/>
<td>
<strong>
<p>
<t t-esc="name"/>
</p>
</strong>
</td>
<td class="text-right">
<t t-esc="total" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
</td>
</tr>
这对我有用,因为我发现当你遍历字典时,它 returns 一个包含两个项目的元组 (key, value)
<h4>Houses sold by type</h4>
<t t-foreach="house_count" t-as="houses">
<t t-set="house" t-value="houses[0]"/>
<t t-set="count" t-value="houses[1]"/>
<p><span t-esc="house" />: <span t-esc="count" /> houses sold</p>
</t>
仅以房屋为例
有没有办法在循环 Qweb 中从 python 字典打印键和值? 例如,如果我有一个 return 字典的功能:
def get_informations(self):
mydico={'myfirstkey':1,'mysecondkey':2}
return mydico
然后,在 Qweb 报告中:
<t t-foreach="doc.get_informations()" t-as="l">
<tr>
<td class="text-right">
<t t-esc="l"/>
</td>
<td class="text-right">
<span t-esc="l_value"/>
</td>
</tr>
</t>
如何打印 key 和 value?
谢谢
2015 年 7 月 12 日更新:
感谢您的 return。 确切地说,当我输入
<t t-foreach="{'my': 'first', 'my2': 'second' }" t-as="v">
有效,我有类似的东西:
my first
my2 second
但是当我在foreach中使用一个函数时,输出完全相同,qweb无法将它分开,我有:
{'my': 'first', 'my2': 'second' }
{'my': 'first', 'my2': 'second' }
所以我决定另辟蹊径:
在我继承报告:
<t t-foreach="doc.tabTaxes" t-as="v">
<tr>
<td>
<span t-esc="v.name"/>
</td>
<td>
<span t-esc="doc.get_amount(v.name)[0]"/>
</td>
</tr>
</t>
在sale.order模型中继承:
@api.one
def get_amount(self, taxeNom):
total=0
for ligne in self.order_line:
for taxe in ligne.tax_id:
if (taxeNom == taxe.name):
try: total += ligne.price_reduce * (taxe.amount/100.)
except: total +=0
return "{0:.2f}".format(total)
@FTK,
鉴于您的函数正在将有效字典返回给 qWeb 模板,下面的代码应该可以完成这项工作:
<div id="wrap" class="oe_structure">
<t t-foreach="{'my': 'first', 'my2': 'second' }" t-as="v">
*<t t-esc="v"/> : <t t-esc="v_value"/></t>
</div>
并且您可以将 tr 放入循环中,这样它就会按您的预期创建 table 行,下面的代码将这样做:
<div id="wrap" class="oe_structure">
<table class="table table-bordered table-condensed">
<t t-foreach="doc.get_informations()" t-as="item">
<tr>
<td class="text-right">
<t t-esc="item"/>
</td>
<td class="text-right">
<t t-esc="item_value"/>
</td>
</tr>
</t>
</table>
</div>
您当然不需要 div 他们的要求。 希望这对你有帮助,
最佳,
- $as_all
被迭代的对象
- $as_value
当前迭代值,与列表和整数的 $as 相同,但对于映射它提供值(其中 $as 提供键)
- Warning
$as will be replaced by the name passed to t-as
此 Link 的引用:https://www.odoo.com/documentation/8.0/reference/qweb.html
我终于明白了如何使用 V9 了:
<tr t-foreach="o.get_list_taxe(o.id)[0]" t-as="taxe">
<t t-set="name" t-value="taxe['name']"/>
<t t-set="total" t-value="taxe['total']"/>
<td>
<strong>
<p>
<t t-esc="name"/>
</p>
</strong>
</td>
<td class="text-right">
<t t-esc="total" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
</td>
</tr>
这对我有用,因为我发现当你遍历字典时,它 returns 一个包含两个项目的元组 (key, value)
<h4>Houses sold by type</h4>
<t t-foreach="house_count" t-as="houses">
<t t-set="house" t-value="houses[0]"/>
<t t-set="count" t-value="houses[1]"/>
<p><span t-esc="house" />: <span t-esc="count" /> houses sold</p>
</t>
仅以房屋为例