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 1001ac73857..811e3632975 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -1001,7 +1001,7 @@ var BasicModel = AbstractModel.extend({ */ _applyMany2OneChange: function (record, fieldName, data) { var self = this; - if (!data) { + if (!data || data.id === false) { record._changes[fieldName] = false; return $.when(); } diff --git a/addons/web/static/tests/fields/relational_fields_tests.js b/addons/web/static/tests/fields/relational_fields_tests.js index f179bbc7621..e67faabe220 100644 --- a/addons/web/static/tests/fields/relational_fields_tests.js +++ b/addons/web/static/tests/fields/relational_fields_tests.js @@ -5797,6 +5797,35 @@ QUnit.module('relational_fields', { form.destroy(); }); + QUnit.test('unset selection on a many2one field', function (assert) { + assert.expect(1); + + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '
' + + '' + + '', + mockRPC: function (route, args) { + if (args.method === 'write') { + assert.strictEqual(args.args[1].trululu, false, + "should send 'false' as trululu value"); + } + return this._super.apply(this, arguments); + }, + res_id: 1, + viewOptions: { + mode: 'edit', + }, + }); + + form.$('select').val("false").trigger('change'); + form.$buttons.find('.o_form_button_save').click(); + + form.destroy(); + }); + QUnit.module('FieldMany2ManyTags'); QUnit.test('fieldmany2many tags: rendering and edition', function (assert) {