diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js index d4e966440cb..3ab3d7f5fa1 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -4227,7 +4227,7 @@ var BasicModel = AbstractModel.extend({ options = options || {}; var defs = []; var field = record.fields[fieldName]; - var fieldInfo = record.fieldsInfo[options.viewType || record.viewType][fieldName]; + var fieldInfo = record.fieldsInfo[options.viewType || record.viewType][fieldName] || {}; var view = fieldInfo.views && fieldInfo.views[fieldInfo.mode]; var fieldsInfo = view ? view.fieldsInfo : fieldInfo.fieldsInfo; var fields = view ? view.fields : fieldInfo.relatedFields; diff --git a/addons/web/static/tests/views/basic_model_tests.js b/addons/web/static/tests/views/basic_model_tests.js index 3f5fca59c60..492f90c4bc8 100644 --- a/addons/web/static/tests/views/basic_model_tests.js +++ b/addons/web/static/tests/views/basic_model_tests.js @@ -2,9 +2,11 @@ odoo.define('web.basic_model_tests', function (require) { "use strict"; var BasicModel = require('web.BasicModel'); + var FormView = require('web.FormView'); var testUtils = require('web.test_utils'); var createModel = testUtils.createModel; + var createView = testUtils.createView; QUnit.module('Views', { beforeEach: function () { @@ -30,7 +32,8 @@ odoo.define('web.basic_model_tests', function (require) { }, product: { fields: { - name: { string: "Product Name", type: "char" } + name: { string: "Product Name", type: "char" }, + category: { string: "Category M2M", type: 'many2many', relation: 'partner_type' }, }, records: [ { id: 37, display_name: "xphone" }, @@ -62,6 +65,57 @@ odoo.define('web.basic_model_tests', function (require) { }, function () { QUnit.module('BasicModel'); + QUnit.test('can process x2many commands', async function (assert) { + assert.expect(5); + + const form = await createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: ` +
+ `, + archs: { + 'product,false,list': ` +