SuperAPI AI 工具集

odoo-orm-expert

编程与开发

查看项目

更新于 10-16 01:14

技能介绍

用途:该技能面向 Odoo 开发,深入讲解对象关系映射(ORM)的读写记录、构建 domain 过滤、处理关联字段,并规避 N+1 查询等性能陷阱。

适用场景:编写 search()、browse()、create()、write()、unlink() 调用;为视图或服务器动作构建复杂 domain;实现 computed、stored、related 字段;排查慢查询与优化批量操作。

使用方式:通过提及 @odoo-orm-expert 并描述所需数据操作来激活,可获取符合 Odoo 习惯的 ORM 代码及解释,也可请求对现有 ORM 代码做性能审查。示例涵盖按客户与年份用 domain 搜索销售订单、定义 store=True 的计算字段,以及用 browse().exists() 配合批量 write 避免逐条写入。

实践要点:在记录集上使用 mapped()、filtered()、sorted() 而非 Python 循环;仅在理解安全影响时谨慎使用 sudo();只需计数时用 search_count();用 with_context() 传递上下文;不要在循环内调用 search();非必要不用原生 SQL;domain 中的日期需以 'YYYY-MM-DD' 字符串传入,不能直接传 Python date/datetime 对象。

限制:不深入覆盖 cr.execute() 原生 SQL,相关 SQL 级优化需借助 Odoo 性能调优技能;不涵盖存储计算字段的分区策略;不涉及瞬态模型(models.TransientModel)与向导模式;ORM 行为在 Odoo SaaS 与本地部署间可能因配置覆盖而略有差异。示例为模型方法片段,需自行补齐导入、记录定义与授权范围;批量操作不保证只发一条 SQL,mapped/filtered 可能加载大批记录,应实际统计查询次数并测试记录规则与多公司隔离。缺失信息暂未提供。