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

Odoo 13自定义模型x_eventcoursetype出现CacheMiss错误求助

Odoo 13 CacheMiss/MissingError 问题排查与解决

问题原因

核心触发点:current_xevtyp 变量指向了已被删除的 x_eventcoursetype 记录(ID=6),模板渲染时直接访问 current_xevtyp.x_name,Odoo 尝试读取不存在的记录字段,先触发 CacheMiss,最终转为 MissingError。

前台显示正常的原因:部分请求上下文里 current_xevtyp 未指向无效记录,或前端缓存掩盖了错误,但后台模板渲染仍会持续触发报错。

解决方案

1. 紧急修复:清理无效筛选上下文

  • 手动访问网站事件页面,切换到其他事件类型或「All Event Types」,覆盖浏览器中保留的 xevtyp=6 无效参数。
  • 若涉及多用户,可通过数据库清理相关会话数据,或在后端拦截无效参数。

2. 模板层面:添加记录有效性校验

修改 XML 模板中访问 current_xevtyp 的代码,增加 exists() 检查,避免直接访问已删除记录的字段:

<a href="#" role="button" class="btn dropdown-toggle" data-toggle="dropdown">
    <i class="fa fa-folder-open"/>
    <t t-if="current_xevtyp and current_xevtyp.exists()" t-esc="current_xevtyp.x_name"/>
    <t t-else="">All Event Types</t>
</a>

exists() 方法会验证记录是否在数据库中真实存在,无效时自动切换为默认文本,阻断报错触发链。

3. 后端逻辑层面:确保上下文变量有效性

如果 current_xevtyp 由后端控制器生成,需在获取记录时添加存在性校验:

# 示例:修改控制器中获取当前事件类型的逻辑
xevtyp_id = request.params.get('xevtyp')
current_xevtyp = None
if xevtyp_id:
    temp_record = request.env['x_eventcoursetype'].browse(int(xevtyp_id))
    # 仅保留有效记录
    if temp_record.exists():
        current_xevtyp = temp_record

从根源确保传入模板的 current_xevtyp 要么是有效记录,要么为 None。

4. 数据层面:清理无效关联

检查 event.event 表中是否有记录仍关联已删除的 x_eventcoursetype(ID=6),批量更新这些记录的关联字段为 Null 或其他有效类型,避免后续操作触发同类错误。

内容的提问来源于stack exchange,提问作者Ahrimann Steiner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:53:16