qWeb的foreach循环 - xiaohao0576/odoo-doc GitHub Wiki

源码

https://github.com/odoo/odoo/blob/fb4e08fe46c0e1865e30b0ce1eb5f4436438ea03/odoo/addons/base/models/ir_qweb.py#L2249

几个自动添加的变量

这些自动创建的键是在使用 t-foreach 指令遍历集合时,QWeb模板引擎为每次迭代自动添加到 values 字典中的辅助变量。

自动创建的键说明 假设你使用 ,那么每次循环会自动创建:

product_size - 集合的总大小/长度

用于显示总数,如"共10个产品" product_index - 当前项的索引(从0开始)

用于显示序号,如"第3项" product_value - 当前项的值

对于字典,这是值部分;对于列表,等同于 product product_first - 是否是第一项(布尔值)

用于给第一项添加特殊样式,如

product_last - 是否是最后一项(布尔值)

用于给最后一项添加特殊样式或分隔符 product_odd - 是否是奇数行(布尔值,0为偶数)

用于交替行样式 product_even - 是否是偶数行(布尔值)

与 product_odd 相反 product_parity - 奇偶性字符串('odd' 或 'even')

方便直接用于CSS类名,如

实际应用示例

<table>
    <t t-foreach="items" t-as="item">
        <tr t-att-class="item_parity">
            <td><t t-out="item_index + 1"/></td>  <!-- 显示序号 1, 2, 3... -->
            <td><t t-out="item.name"/></td>
            <td t-if="item_first">第一项</td>
            <td t-if="item_last">最后一项</td>
        </tr>
    </t>
    <tr>
        <td colspan="3">共 <t t-out="item_size"/> 项</td>
    </tr>
</table>
⚠️ **GitHub.com Fallback** ⚠️