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

Odoo 14 QWeb报告通过IP/域名访问时时间显示异常,localhost访问正常

Odoo 14 不同访问方式下QWeb报告时间偏差原因及解决方案

核心原因

  • 时区上下文匹配异常
    Odoo渲染时间时会优先读取会话绑定的时区参数,localhost访问时默认继承服务器本地时区配置,而通过IP/域名访问时如果会话未正确加载时区参数,会默认使用UTC时间,和实际时区的差值就是你看到的时间偏差。
  • 反向代理请求头丢失
    如果域名/IP访问是通过Nginx、Apache等反向代理转发到Odoo服务,若代理未正确传递X-Forwarded-*系列请求头,Odoo无法识别当前访问的上下文信息,会默认使用UTC时间渲染QWeb报告。
  • 用户账户时区配置不一致
    检查当前登录账户的时区设置:进入设置 -> 技术 -> 用户界面 -> 用户,打开对应用户详情页确认时区参数。localhost访问时可能使用了已配置正确时区的管理员账户,外部访问时登录的是未配置时区的普通账户,导致时间渲染基准不同。
  • QWeb模板时间取值逻辑错误
    自定义QWeb报告如果直接使用datetime.now()这类原生方法取服务器时间,没有调用Odoo封装的fields.Datetime.context_timestamp()方法做时区转换,不同访问上下文的会话参数差异会导致时间输出不一致。

修复方案

  • 修改Odoo配置文件(通常为odoo.conf),添加/修改timezone参数为你所在的时区,国内环境示例:
timezone = Asia/Shanghai

修改后重启Odoo服务生效。

  • 反向代理配置中添加请求头传递规则,Nginx示例配置:
location / {
    proxy_pass http://127.0.0.1:8069;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Host $host;
}
  • 统一所有业务用户的时区配置,确保和实际使用地区时区一致。
  • 修正QWeb报告模板的时间渲染逻辑,统一使用带时区转换的方法渲染时间字段,示例:
<!-- 错误写法 -->
<t t-esc="datetime.now()"/>
<!-- 正确写法 -->
<t t-esc="fields.Datetime.context_timestamp(record, record.create_date)"/>

内容的提问来源于stack exchange,提问作者Omeed Totakhel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:36:02