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

Odoo 12销售订单点击发货按钮触发Odoo服务器错误求助

解决Odoo 12点击「发货」按钮触发的服务器错误

嘿,我来帮你搞定这个问题!从你提供的错误追踪信息来看,核心问题很明确:stock.picking(库存调拨)模型里压根没有website_id这个字段,但crnd_web_diagram_plus这个第三方模块在处理调拨单表单视图时,硬要找这个字段,直接触发了ValueError。

问题根源拆解

报错上下文指向stock.view_picking_form(视图ID:1082),而错误是在crnd_web_diagram_plus模块的视图处理方法里抛出来的。这个模块应该是做了视图扩展,但没考虑到stock.picking原生不包含电商模块的website_id字段,才导致了冲突。

具体解决办法(按推荐程度排序)

方法一:直接禁用crnd_web_diagram_plus模块(最省心)

如果这个模块不是你业务必须的,直接停用就完事:

  • 打开Odoo的「应用」模块,搜索crnd_web_diagram_plus
  • 点击模块卡片上的「停用」按钮
  • 重启Odoo服务器,再去测试销售订单的「发货」按钮,应该就正常了

方法二:修复crnd_web_diagram_plus的代码(适合需要保留模块的场景)

要是你离不开这个模块,就得改它的代码逻辑,避免在stock.picking模型里找不存在的字段:

  1. 找到模块的代码文件:C:\Program Files (x86)\Odoo 12.0\server\odoo\addons\crnd_web_diagram_plus\models\ir_ui_view.py
  2. 打开文件找到postprocess_and_fields方法(大概在第25行左右)
  3. 添加字段存在性检查,比如:
    # 在处理前先判断当前模型是不是stock.picking,且是否有website_id字段
    if model._name == 'stock.picking' and 'website_id' not in model._fields:
        # 跳过当前模块的处理,直接调用父类方法
        return super(IrUiView, self).postprocess_and_fields(model, node, view_id)
    # 模块原有的处理逻辑...
    
  4. 保存修改后,重启Odoo并更新crnd_web_diagram_plus模块

方法三:给stock.picking加website_id字段(不推荐,治标不治本)

除非你确实需要给调拨单关联网站,否则不建议这么做,因为会引入不必要的字段,可能引发其他兼容性问题。如果一定要加,就写个自定义模块继承stock.picking:

from odoo import models, fields

class StockPicking(models.Model):
    _inherit = 'stock.picking'
    
    website_id = fields.Many2one('website', string='关联网站')

安装这个自定义模块后,更新视图即可。

验证步骤

不管用哪种方法,改完后记得重启Odoo,然后回到销售订单页面点击「发货」,确认调拨单页面能正常加载,没有服务器错误就搞定啦!

内容的提问来源于stack exchange,提问作者Fares Abodous

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:22:27