diff --git a/addons/web/static/src/js/views/basic/basic_view.js b/addons/web/static/src/js/views/basic/basic_view.js index 326839f7b0a..e38b7b4584e 100644 --- a/addons/web/static/src/js/views/basic/basic_view.js +++ b/addons/web/static/src/js/views/basic/basic_view.js @@ -81,8 +81,10 @@ var BasicView = AbstractView.extend({ if (!('fieldsInfo' in record.data[name])) { fieldNames.push(name); } else { + var fieldInfo = record.fieldsInfo[viewType][name]; + var fieldViews = fieldInfo.views || fieldInfo.fieldsInfo || {}; + var fieldViewTypes = Object.keys(fieldViews); var recordViewTypes = Object.keys(record.data[name].fieldsInfo); - var fieldViewTypes = Object.keys(record.fieldsInfo[viewType][name].views); if (_.difference(fieldViewTypes, recordViewTypes).length) { fieldNames.push(name); } diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js index 5635f0cefa2..00154717e5f 100644 --- a/addons/web/static/tests/views/form_tests.js +++ b/addons/web/static/tests/views/form_tests.js @@ -3402,5 +3402,53 @@ QUnit.module('Views', { form.destroy(); }); + QUnit.test('open one2many form containing many2many_tags', function (assert) { + assert.expect(4); + + this.data.partner.records[0].product_ids = [37]; + this.data.product.fields.partner_type_ids = { + string: "many2many partner_type", type: "many2many", relation: "partner_type", + }; + this.data.product.records[0].partner_type_ids = [12, 14]; + + var form = createView({ + View: FormView, + model: 'partner', + res_id: 1, + data: this.data, + arch: '
' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
' + + '', + mockRPC: function (route, args) { + assert.step(args.method); + return this._super.apply(this, arguments); + }, + }); + var row = form.$('.o_form_field_one2many .o_list_view .o_data_row'); + row.click(); + assert.verifySteps(['read', 'read', 'read'], + "there should be 3 read rpcs"); + form.destroy(); + }); + }); });