Odoo14 QWeb浮点数转整数失败求助:报表仅显示百分号
解决Odoo14 QWeb报表中浮点数转整数不显示的问题
问题分析
你遇到的核心问题是:当doc.total_mesin_jalan或doc.presentasi_total字段值为空(None)时,直接调用int()转换会触发静默错误,QWeb模板会跳过该元素的内容渲染,最终只显示后面的百分号。另外也需要先确认字段本身是否存在有效值。
解决方案
1. 处理空值情况(最常见原因)
在转换时添加默认值,避免空值转换报错:
<tr class="border-black"> <td> <strong>Total Mesin Jalan</strong> </td> <td class="text-right"> <span t-value="int(doc.total_mesin_jalan or 0)"/> % </td> </tr> <tr class="border-black"> <td> <strong>Presentasi Total</strong> </td> <td class="text-right" style="background-color: #3498DB; color: #fff !important;"> <span t-value="int(doc.presentasi_total or 0)"/> % </td> </tr>
or 0会在字段为空时自动使用0作为默认值,确保int()转换能正常执行,同时保留非空值的转换逻辑。
2. 针对字符串类型的浮点数
如果字段存储的是字符串格式的浮点数(比如"15.7"),需要先转成float再转int:
<span t-value="int(float(doc.total_mesin_jalan or 0))"/> %
3. 使用Odoo内置格式化函数(推荐)
如果需要适配本地化数字格式,可以用formatLang函数:
<span t-value="formatLang(int(doc.total_mesin_jalan or 0), digits=0)"/> %
该函数会根据系统设置自动处理数字的显示格式,同时确保整数正确渲染。
4. 先验证字段值
如果上述方法仍无效,先确认字段本身是否有有效值,临时修改代码直接显示原始值排查:
<span t-value="doc.total_mesin_jalan"/>
如果这里也没有输出,说明模型中的字段未正确赋值或计算,需要检查对应模型的业务逻辑。
内容的提问来源于stack exchange,提问作者it uw
相关产品推荐
相关产品推荐

