Xml 我怎样才能做一个;for loop";在Qweb中使用特定数量的循环?

Xml 我怎样才能做一个;for loop";在Qweb中使用特定数量的循环?,xml,for-loop,odoo,odoo-8,qweb,Xml,For Loop,Odoo,Odoo 8,Qweb,我想做一个循环来打印元素的精确次数。大概是这样的: <t t-for="o.label_qty" > ... </t> 有办法做到这一点吗 如果没有,我认为唯一的解决方案是创建一个包含o.label\u quaty元素的虚拟列表,并将其写入foreach中。是的,在Odoo Qweb报告中完全可能您只需添加以下方法即可完成类似的操作 <t t-foreach="o.pack_operation_ids" t-as="l" > &l

我想做一个循环来打印元素的精确次数。大概是这样的:

<t t-for="o.label_qty" >
...
</t>
有办法做到这一点吗


如果没有,我认为唯一的解决方案是创建一个包含
o.label\u quaty
元素的虚拟列表,并将其写入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>

听到
标记
正在打印时,打印qweb报告时将执行的总次数循环。 索引
Qweb模板引擎的一部分
,因此它总是以
0元素开始


我希望我的回答可以帮助您:)

t-foreach
指令接受Python表达式。 因此,您可以使用
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.
>a=1.0
>>>射程(a)
>>>回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:应为range()整数结束参数,获得浮点值。
对于动态变量循环,有两种可能使用特定数量的循环

  • 整数(由@Daniel Reis回答)
  • 浮点数(尝试以下选项)

    
    ...
    

  • 如果o.label\u qty存储浮点值,则它将引发错误类型错误:预期为range()整数结束参数,获得浮点值。因此,对于Python3.x,我们必须进行从float到int的类型转换,我相信我们必须使用
    list(range())
    您是对的Odedra。但是我在我的问题中指出,
    o.label\u qty
    是一个整数,所以我认为丹尼尔·赖斯的答案就足够了。谢谢你的贡献
    >>>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>