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

Odoo16 POS加载自定义字段报错:models.load_fields is not a function

Odoo16 POS加载自定义字段报错解决

问题描述

在Odoo16 POS模块中,尝试调用models.load_fields方法为订单行加载product.product模型的自定义字段'test'时,控制台抛出错误:TypeError: models.load_fields is not a function,需求是将该自定义字段显示在POS订单中。

错误代码如下:

odoo.define('serial_attributes.pos_attributes', function (require) {
    "use strict";
    console.log("Iam HEreeeeeeeeeeeeeee!!!!!!!!!!!!!!!")

    var models = require("point_of_sale.models");
    var _super_orderline = models.Orderline.prototype;
    console.log("models", models);
    models.load_fields("product.product", "test")
    models.Orderline = models.Orderline.extend({
        initialize: function (attr, options) {
            var line = _super_orderline.initialize.apply(this, session, arguments);
            this.test = this.product.test;
            console.log("test", this.test)
        }
    })
})

原因分析

Odoo16的POS模块已移除models.load_fields方法,加载自定义字段需通过扩展POS的产品模型来配置同步字段。

修正方案

通过扩展models.Product模型将自定义字段加入同步列表,同时修正订单行初始化方法的参数错误:

修正后的代码:

odoo.define('serial_attributes.pos_attributes', function (require) {
    "use strict";

    var models = require("point_of_sale.models");
    var _super_orderline = models.Orderline.prototype;
    var _super_product = models.Product.prototype;

    // 扩展产品模型,同步自定义字段值
    models.Product = models.Product.extend({
        init_from_JSON: function (json) {
            _super_product.init_from_JSON.apply(this, arguments);
            this.test = json.test;
        },
    });

    // 将test字段加入POS同步的product.product字段列表
    models.PosModel.models.product.product.fields.push('test');

    // 扩展订单行模型,获取自定义字段值
    models.Orderline = models.Orderline.extend({
        initialize: function (attr, options) {
            _super_orderline.initialize.apply(this, arguments);
            this.test = this.product ? this.product.test : undefined;
            console.log("test", this.test);
        }
    });
})

关键改动说明

  1. 移除无效方法调用:删除models.load_fields,改用models.PosModel.models.product.product.fields.push('test')配置同步字段
  2. 扩展产品模型:通过init_from_JSON方法将同步的JSON数据中的'test'字段赋值给产品实例
  3. 修正初始化参数:原代码apply(this, session, arguments)参数错误,改为apply(this, arguments),同时增加this.product存在性判断避免报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 13:17:14