You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo中t-if条件判断失效:o.date字段显示正常但条件不生效?

问题原因及解决方法

核心错误点

  1. 错误引用字段:你在t-if条件里写了'o.date',加单引号后这只是普通字符串,不是读取o记录的date字段值。实际是在比较字符串"o.date"和"20/04/2023",这种比较永远不成立,所以t-if不会生效。
  2. 日期字符串比较逻辑错误:就算去掉引号,直接用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 06:22:41