diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js index f4677ac7190..432961bc0bf 100644 --- a/addons/web/static/src/js/fields/relational_fields.js +++ b/addons/web/static/src/js/fields/relational_fields.js @@ -2959,11 +2959,7 @@ var FieldSelection = AbstractField.extend({ style: disabled ? "display: none" : "", })); } - var value = this.value; - if (this.field.type === 'many2one' && value) { - value = value.data.id; - } - this.$el.val(JSON.stringify(value)); + this.$el.val(JSON.stringify(this._getRawValue())); }, /** * @override @@ -2971,6 +2967,14 @@ var FieldSelection = AbstractField.extend({ */ _renderReadonly: function () { this.$el.empty().text(this._formatValue(this.value)); + this.$el.attr('raw-value', this._getRawValue()); + }, + _getRawValue: function() { + var raw_value = this.value; + if (this.field.type === 'many2one' && raw_value) { + raw_value = raw_value.data.id; + } + return raw_value; }, /** * @override diff --git a/addons/web/static/tests/fields/relational_fields_tests.js b/addons/web/static/tests/fields/relational_fields_tests.js index 56bb564880f..487e953003f 100644 --- a/addons/web/static/tests/fields/relational_fields_tests.js +++ b/addons/web/static/tests/fields/relational_fields_tests.js @@ -997,7 +997,7 @@ QUnit.module('relational_fields', { }); QUnit.test('widget selection, edition and on many2one field', async function (assert) { - assert.expect(19); + assert.expect(21); this.data.partner.onchanges = {product_id: function () {}}; this.data.partner.records[0].product_id = 37; @@ -1024,10 +1024,14 @@ QUnit.module('relational_fields', { assert.containsNone(form.$('.o_form_view'), 'select'); assert.strictEqual(form.$('.o_field_widget[name=product_id]').text(), 'xphone', "should have rendered the many2one field correctly"); + assert.strictEqual(form.$('.o_field_widget[name=product_id]').attr('raw-value'), '37', + "should have set the raw-value attr for many2one field correctly"); assert.strictEqual(form.$('.o_field_widget[name=trululu]').text(), '', "should have rendered the unset many2one field correctly"); assert.strictEqual(form.$('.o_field_widget[name=color]').text(), 'Red', "should have rendered the selection field correctly"); + assert.strictEqual(form.$('.o_field_widget[name=color]').attr('raw-value'), 'red', + "should have set the raw-value attr for selection field correctly"); await testUtils.form.clickEdit(form);