如何在 Qweb 中制作具有特定循环次数的 "for-loop"?
How can I make a "for-loop" with a specific number of loops in Qweb?
我想制作一个循环以准确打印元素的次数。像这样:
<t t-for="o.label_qty" >
...
</t>
其中 o.label_qty
是一个整数。
但我只能在 qweb 中使用 t-foreach
循环:
<t t-foreach="o.pack_operation_ids" t-as="l" >
...
</t>
有办法吗?
如果不是,我认为唯一的解决方案是创建一个包含 o.label_qty
元素的虚拟列表并将其写入 foreach。
是的,在 Odoo Qweb 报告中完全有可能,您只需添加以下方法即可完成类似的操作
<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
.
开头
希望我的回答对您有所帮助:)
t-foreach
指令接受 Python 表达式。
因此,您可以像在 Python for
循环中一样使用 range()
:
<t t-foreach="range(o.label_qty)" t-as="l">
...
</t>
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.
对于动态变量循环,有两种可能的循环方式。
- 整数(由@Daniel Reis 回答)
浮点数(尝试以下)
<t t-set="i" t-value="int(o.label_qty)"/>
<t t-foreach="range(i)" t-as="l">
...
</t>
我想制作一个循环以准确打印元素的次数。像这样:
<t t-for="o.label_qty" >
...
</t>
其中 o.label_qty
是一个整数。
但我只能在 qweb 中使用 t-foreach
循环:
<t t-foreach="o.pack_operation_ids" t-as="l" >
...
</t>
有办法吗?
如果不是,我认为唯一的解决方案是创建一个包含 o.label_qty
元素的虚拟列表并将其写入 foreach。
是的,在 Odoo Qweb 报告中完全有可能,您只需添加以下方法即可完成类似的操作
<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
.
希望我的回答对您有所帮助:)
t-foreach
指令接受 Python 表达式。
因此,您可以像在 Python for
循环中一样使用 range()
:
<t t-foreach="range(o.label_qty)" t-as="l">
...
</t>
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.
对于动态变量循环,有两种可能的循环方式。
- 整数(由@Daniel Reis 回答)
浮点数(尝试以下)
<t t-set="i" t-value="int(o.label_qty)"/> <t t-foreach="range(i)" t-as="l"> ... </t>