You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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_date
    
  • QWeb报表模板修改:如果报表模板中存在遍历 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 22:35:40