当前位置: 首页 > news >正文

odoo-065 两个视图中的action类型的button互相引用,造成死循环

文章目录

  • 问题
  • 找问题
  • 修改
  • 总结

问题

在安装项目的新模块时,有个模块安装总是报错:找不到 xml id。
猜测:可能跟__manifest__.py 文件中的视图的顺序有关,加载按顺序加载的。

找问题

__manifest__.py 中的 顺序:

'data': [      'views/customer_card.xml','views/sale_order_view.xml',],

调整顺序还是报找不到xml id的错,然后发现:

  1. 在 sale_order_view.xml 中引用 type="action"的button,写法如下:
<button name="%(action_customer_card_order)d" type="action"><field name="year_card_count" widget="statinfo"/>
</button>

说明:这个 action_customer_card_order 是在 文件 customer_card.xml 中定义的。

  1. 在 customer_card.xml 中 中引用 type="action"的button,写法如下:
<button name="%(action_sale_customer_year_card)d" type="action"><span>订单</span>
</button>

说明:这个 action_sale_customer_year_card 是在 文件 sale_order_view.xml 中定义的。

修改

如下修改,把 button 的 name 属性改成ref,并且加上模块名称,可以正常安装。

1改后:

<button ref="qc_member_card.action_customer_card_order" type="action"><field name="year_card_count" widget="statinfo"/>
</button>

2改后:

<button ref="qc_member_card.action_sale_customer_year_card" type="action"><span>订单</span>
</button>

总结

这是典型的 Odoo XML ID 循环依赖问题。Odoo 加载 XML 文件的顺序由 manifest.py中的 data列表决定。

当两个视图文件互相引用对方的动作(action)时,无论哪个模块先加载,都会出现找不到 XML ID 的错误。

把 name 属性换成 ref,不清楚为什么这样就可以了,带研究。

其他方法:
或者把 action 的写法提取到一个公共文件,有限加载这个文件,可以避免循环引用的问题。

http://www.dtcms.com/a/344754.html

相关文章:

  • ubuntu使用fstab挂载USB设备(移动硬盘)
  • Claude Code接入Serena mcp
  • ESP32C5,使用espidf框架配置wifi扫描时报错,为什么会提示,ghz_5_channels的参数无效呢
  • 开发避坑指南(32):FastJSON异常JSONArray cannot be cast to JSONObject解决方案
  • 什么是数据分类分级?数据分类分级技术实现路径及产品推荐
  • ​Kubernetes 详解:云原生时代的容器编排与管理
  • 08.21总结
  • 【yocto】BitBake指令汇总解析
  • 基于springboot的农产品社区配送系统
  • 线性回归的学习
  • C++ unistd.h库文件介绍(文件与目录操作, 进程管理, 系统环境访问, 底层I/O操作, 系统休眠/执行控制)
  • golang 非error错误分类
  • 【如何生成专业级 API 接口文档:从规范到实战】
  • 指针实现数组的逆序存放并输出
  • IKE 与 ISAKMP 核心笔记
  • JCTools Spmc 单生产者-多消费者的无锁并发有界队列
  • 支持轻量化部署的混元3D世界模型Lite版本上线魔乐社区,昇腾部署实践来啦
  • FCT/ATE/ICT通用测试上位机软件
  • Leetcode—595. 大的国家【简单】
  • JUC之Fork/Join
  • WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析9
  • 2-3.Python 编码基础 - 类型检测与类型转换
  • Vue 实现可拖拽分割布局(支持左右、上下拖拽调整)
  • Java 学习笔记(基础篇7)
  • 2025年游戏盾SDK动态加密技术全景解析:从防御破解到重塑游戏安全基石
  • CSM5110 5V/1A降压芯片 SOT23-5封装 可替代RY3408 带OVP保护
  • vim的使用
  • 牛客面经1 滴滴社招-002
  • JAVA国际版多商户运营版商城系统源码多商户社交电商系统源码支持Android+IOS+H5
  • 哈希和字符串哈希