我想制作一个循环来打印元素的确切次数。像这样的东西:
<t t-for="o.label_qty" >
...
</t>
其中o.label_qty
是一个整数。
但我只能t-foreach
在 qweb 中使用一个循环:
<t t-foreach="o.pack_operation_ids" t-as="l" >
...
</t>
有没有办法做到这一点?
如果不是,我认为唯一的解决方案是创建一个包含o.label_qty
元素的虚拟列表并将其写入 foreach。
该t-foreach
指令接受 Python 表达式。因此,您可以range()
像在 Pythonfor
循环中一样使用:
<t t-foreach="range(o.label_qty)" t-as="l">
...
</t>
是的,在 Odoo Qweb Report 中完全有可能你只需要添加下面的方法来做这样的事情
<t t-foreach="o.pack_operation_ids" t-as="l" >
<td class="col-xs-1">
<span t-esc="l_index+1"/>
</td>
</t>
听到<span> tag
打印我们打印 qweb 报告时将执行循环的总次数。
index是的一部分,Qweb Template Engine
所以听到它总是以0 element
.
希望我的回答能帮到你:)
range()函数将引发浮点值错误。
例如:
>>>a=1.0
>>>range(a)
>>>Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: range() integer end argument expected, got float.
对于动态变量循环,使用特定数字循环有两种可能性。
浮点数(尝试以下)
<t t-set="i" t-value="int(o.label_qty)"/>
<t t-foreach="range(i)" t-as="l">
...
</t>