Odoo中t-if条件判断失效:o.date字段显示正常但条件不生效?
问题原因及解决方法
核心错误点
- 错误引用字段:你在
t-if条件里写了'o.date',加单引号后这只是普通字符串,不是读取o记录的date字段值。实际是在比较字符串"o.date"和"20/04/2023",这种比较永远不成立,所以t-if不会生效。 - 日期字符串比较逻辑错误:就算去掉引号,直接用
o.date > '20/04/2023'也不对——Odoo的Date字段存储的是YYYY-MM-DD格式的字符串,和DD/MM/YYYY格式的字符串按字符顺序比较会得到错误结果(比如"2023-01-21"和"20/04/2023"比较,字符串层面前者更大,但实际日期更早)。
修正后的代码示例
<div width="100%" class="font_fam" style="text-align:right; margin-top:-0px"> <font style="font-size: 18px;"> <t t-if="o.date > fields.Date.from_string('2023-04-20')"> <span t-field="o.date"/> <span>Test</span> </t> </font> </div>
关键说明
- 去掉
o.date的单引号,让QWeb正确读取记录的date字段值。 - 使用
fields.Date.from_string()方法把目标日期(需写成YYYY-MM-DD格式)转成Odoo内部的日期对象,和o.date进行正确的日期比较。 - 如果你的
date字段是Datetime类型,改用fields.Datetime.from_string()处理目标日期即可。
内容的提问来源于stack exchange,提问作者Jubb
相关产品推荐
相关产品推荐

