出库时的 stock.move.line 是如何确定的
用通俗但不失源码细节的方式,讲清楚 Odoo 出库时 stock.move.line 的生成逻辑:从 stock.move、stock.quant、移除策略到 lot/serial 拆行。
CATEGORY FOCUS
聚合 Odoo 开发基础、源码理解、ORM、模型、视图、安全与扩展实践。
TOPIC PICKS
用通俗但不失源码细节的方式,讲清楚 Odoo 出库时 stock.move.line 的生成逻辑:从 stock.move、stock.quant、移除策略到 lot/serial 拆行。
很多人知道 Odoo 可以通过邮件别名自动进线,却不知道模型侧是如何把业务记录和 mail.alias 绑定起来的。本文结合官方源码,讲清 mail.alias.mixin 与 mail.alias.mixin.optional 的创建、写入、域名同步和删除边界。
很多人以为 fields_get 只是把模型字段列出来,实际上它是 Odoo 返回字段元数据的关键入口。本文结合官方源码讲清 fields_get 如何做权限过滤、翻译、readonly 修正,以及为什么同一个字段在不同上下文下标签会变。
你改了配置、权限、菜单或模板,结果页面还是旧的,很多时候不是你没改对,而是碰到了 Odoo 的 ormcache。本文结合官方源码讲清 ormcache 的键、命中方式,以及 clear_caches 到底该在什么时候用。
很多人把 Expected singleton 当成“报错提示”,其实它暴露的是 recordset 设计边界。本文结合 Odoo 官方 ORM 源码,讲清 ensure_one、字段读取为何常要求单条记录,以及批量写法该怎样改。
很多人把 ormcache 当成给 Python 方法提速的小工具,但它真正影响的是 registry 级缓存、事务内命中统计和跨请求复用边界。本文结合 Odoo 官方源码讲清什么时候该用、key 该怎么设计,以及为什么绝不能缓存 recordset。
很多 Odoo 开发都会遇到同一个困惑:明明改了 XML 里的记录,升级模块后数据库却不更新。问题往往不在“升级没跑”,而在 noupdate 和 ir.model.data 的升级语义。