Odoo16 QWeb:如何将Float转为Int以按库存循环打印标签
Odoo16 QWeb中Float转Int实现标签批量打印
解决你遇到的Float类型无法迭代的问题,直接按以下方式处理:
1. 将Float库存值转为整数
在QWeb里使用int()函数直接转换库存数量,它会自动提取float的整数部分(例如5.9会转为5)。如果需要四舍五入逻辑,改用round()函数即可。
2. 用range()循环生成对应数量的标签
转换后的整数可以正常传入range(),实现按库存数量循环打印标签。
修正后的完整代码示例:
<t t-name="xxNAMExx"> <t t-set="qty" t-value="int(product.qty_available)"/> <!-- Float转Int --> <!-- 增加判断避免0或负数时无意义循环 --> <t t-if="qty > 0"> <t t-foreach="range(qty)" t-as="item"> <div>CONTENT</div> </t> </t> </t>
补充说明
- 之前直接用
range(product.qty_available)无效,是因为range()仅接受整数参数,传入float类型会触发类型错误。 - 如果需要向上取整(比如5.1打印6个标签),可以使用
math.ceil(),在QWeb中写法为t-value="math.ceil(product.qty_available)",需确保模板能访问math模块。
内容的提问来源于stack exchange,提问作者ravee
相关产品推荐
相关产品推荐

