如何在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']);
});
我需要在 /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']);
});