Odoo property 字段为什么会“同一字段不同公司不同值”:company_dependent、回退值与多公司读取链
结合 Odoo 19 字段源码,讲清 company_dependent 字段并不是魔法,而是按公司存储并带 fallback 的字段语义。理解它,才能少踩多公司配置串味、默认值错读和搜索结果不一致的坑。
ARTICLE LIBRARY
持续记录源码理解、业务流程、模块开发经验与踩坑总结。
结合 Odoo 19 字段源码,讲清 company_dependent 字段并不是魔法,而是按公司存储并带 fallback 的字段语义。理解它,才能少踩多公司配置串味、默认值错读和搜索结果不一致的坑。
基于 Odoo 19 ORM 源码,讲清 One2many 与 Many2many 的 Command 在 create/write 阶段到底会创建什么、解除什么、删除什么,帮你避免误删子行、重复建记录和关系覆盖。
很多团队看到 CRM 里未分配线索堆积,会先怀疑 cron 没跑。基于 Odoo 官方源码,这篇文章按真正执行顺序拆开:team 是否参与分配、线索是否进入候选池、成员 quota 是否已空、preferred domain 与 assignment domain 是否把候选漏掉,以及为什么命不中成员时系统根本不会转商机。
从 Odoo 19 的 web onchange 实现出发,解释 onchange 为什么本质上是在表单草稿上做推演,而不是在数据库里真正写记录;也讲清它和 create/write/constraints 该如何分工。
结合 Odoo 19 ORM 与 website.page 源码,讲清 _inherit 和 _inherits 的根本区别:前者是在同一模型上加能力,后者是通过委托把父模型字段投影到子模型上,但数据仍存放在不同表里。
从 Odoo 19 的 ORM 源码出发,讲清 flush_model、invalidate_model、modified 各自解决什么问题,以及为什么你一旦直接写 SQL,就必须主动把 ORM 世界和数据库世界重新对齐。