diff --git a/addons/web/static/src/legacy/js/control_panel/control_panel_model_extension.js b/addons/web/static/src/legacy/js/control_panel/control_panel_model_extension.js index aba25a83849..da93ad344b7 100644 --- a/addons/web/static/src/legacy/js/control_panel/control_panel_model_extension.js +++ b/addons/web/static/src/legacy/js/control_panel/control_panel_model_extension.js @@ -858,7 +858,7 @@ odoo.define("web/static/src/js/control_panel/control_panel_model_extension.js", child.attrs.isDefault = true; let value = this.searchDefaults[child.attrs.name]; if (child.tag === 'field') { - child.attrs.defaultValue = Array.isArray(value) ? value[0] : value; + child.attrs.defaultValue = this.fields[child.attrs.name].type === 'many2one' && Array.isArray(value) ? value[0] : value; } else if (child.tag === 'groupBy') { child.attrs.defaultRank = typeof value === 'number' ? value : 100; } diff --git a/addons/web/static/tests/legacy/control_panel/control_panel_model_extension_tests.js b/addons/web/static/tests/legacy/control_panel/control_panel_model_extension_tests.js index 199c4b64baa..487414b678e 100644 --- a/addons/web/static/tests/legacy/control_panel/control_panel_model_extension_tests.js +++ b/addons/web/static/tests/legacy/control_panel/control_panel_model_extension_tests.js @@ -369,5 +369,52 @@ odoo.define("web/static/tests/control_panel/control_panel_model_extension_tests. }); + QUnit.test('search defaults on X2M fields', async function (assert) { + assert.expect(1); + + const context = { + search_default_otom: [1, 2], + search_default_mtom: [1, 2] + }; + const fields = this.fields; + fields.otom = { string: "O2M", type: "one2many", relation: 'partner' }; + fields.mtom = { string: "M2M", type: "many2many", relation: 'partner' }; + const arch = ` + + + + `; + const model = createModel({ arch, fields, context }); + assert.deepEqual(sanitizeFilters(model), [ + { + "defaultAutocompleteValue": { + "label": [1, 2], + "operator": "ilike", + "value": [1, 2] + }, + "defaultRank": -10, + "description": "O2M", + "fieldName": "otom", + "fieldType": "one2many", + "isDefault": true, + "type": "field" + }, + { + "defaultAutocompleteValue": { + "label": [1, 2], + "operator": "ilike", + "value": [1, 2] + }, + "defaultRank": -10, + "description": "M2M", + "fieldName": "mtom", + "fieldType": "many2many", + "isDefault": true, + "type": "field" + } + ]); + + }); + }); });