如何在odoo 10中更新js数据

How to update js data in odoo 10

我需要在 /point_of_sale/static/src/js/models.js 中包含其他字段 在 class PosModel 中,可变模型,'res.company' 模型。在基本变体中,它看起来像这样:

odoo.define('point_of_sale.models', function (require) {
"use strict";

...

var QWeb = core.qweb;
var _t = core._t;
var Mutex = utils.Mutex;
var round_di = utils.round_decimals;
var round_pr = utils.round_precision;
var Backbone = window.Backbone;

var exports = {};

exports.PosModel = Backbone.Model.extend({
    initialize: function(session, attributes) {
        ...
    },
    ...
    models: [
      { 
        model:  'res.company',
        fields: [ 'currency_id', 'email', 'website', 'company_registry', 'vat', 'name', 'phone', 'partner_id' , 'country_id', 'tax_calculation_rounding_method'],
        ids:    function(self){ return [self.user.company_id[0]]; },
        loaded: function(self,companies){ self.company = companies[0]; },
    },
    ]
})
}); 

虽然我需要包含其他字段,但假设 'city'、'logo' 来自 'company' 模型。所以模型应该是这样的:

...
        models: [
          { 
            model:  'res.company',
            fields: [ 'currency_id', 'email', 'website', 'company_registry', 'vat', 'name', 'phone', 'partner_id' , 'country_id', 'tax_calculation_rounding_method', 'logo', 'city'],
            ids:    function(self){ return [self.user.company_id[0]]; },
            loaded: function(self,companies){ self.company = companies[0]; },
        },
        ]
...

我试过使用 include,像这样:

odoo.my_addon = function(instance){
    var _t = instance.web._t,
    _lt = instance.web._lt;
    var QWeb = instance.web.qweb;

instance.point_of_sale.PosModel.include({
models: [
    { 
    model:  'res.company',
    fields: [ 'currency_id', 'email', 'website', 'company_registry', 'vat', 'name', 'phone', 'partner_id' , 'country_id', 'tax_calculation_rounding_method', 'logo', 'city'],
    ids:    function(self){ return [self.user.company_id[0]]; },
    loaded: function(self,companies){ self.company = companies[0]; },
}]
})
});

但是没有成功

您只需按照以下步骤即可达到您的要求。

在static/src/js目录下新建一个JS文件,在里面写下下面的代码,就这样。

odoo.define('yourmodulename.filename', function (require) {
    var models = require('point_of_sale.models');
    models.load_fields("res.company", ['logo', 'city']);
});