Odoo 15至16自定义报表迁移报错:'stock.picking'无'move_lines'属性
问题原因
Odoo 16 对库存模块的字段结构进行了重构,stock.picking 对象原有的 move_lines 字段已被移除,替换为 move_ids 字段。你的自定义报表或关联的向导代码中仍在引用旧字段名,导致触发 AttributeError。
解决方案
需要在所有涉及 stock.picking 的代码(包括报表逻辑、QWeb模板、向导处理代码)中,将 move_lines 替换为 move_ids,具体步骤如下:
Python代码修改:如果报表生成逻辑或向导的日期更新代码中存在类似
picking.move_lines的调用,直接替换为picking.move_ids。
示例(日期更新逻辑):# 原Odoo15代码 for move in picking.move_lines: move.date_effective = wizard.new_effective_date # 修改为Odoo16代码 for move in picking.move_ids: move.date_effective = wizard.new_effective_dateQWeb报表模板修改:如果报表模板中存在遍历
move_lines的逻辑,比如t-foreach="o.move_lines",替换为t-foreach="o.move_ids"。
示例:<!-- 原Odoo15模板代码 --> <t t-foreach="o.move_lines" t-as="move"> <tr> <td><t t-esc="move.product_id.name"/></td> </tr> </t> <!-- 修改为Odoo16模板代码 --> <t t-foreach="o.move_ids" t-as="move"> <tr> <td><t t-esc="move.product_id.name"/></td> </tr> </t>验证测试:修改完成后升级自定义模块,重启Odoo服务,清除浏览器缓存后重新测试报表功能。
额外注意事项
如果代码中还涉及 move_lines 相关的搜索域、筛选条件或模型字段依赖(比如视图定义中的关联),也需要同步替换为 move_ids,避免潜在的隐性错误。
内容的提问来源于stack exchange,提问作者a.hussin
相关产品推荐
相关产品推荐

