diff --git a/addons/web/static/src/legacy/js/views/basic/basic_model.js b/addons/web/static/src/legacy/js/views/basic/basic_model.js
index ee04484b781..8e56448968f 100644
--- a/addons/web/static/src/legacy/js/views/basic/basic_model.js
+++ b/addons/web/static/src/legacy/js/views/basic/basic_model.js
@@ -381,6 +381,8 @@ var BasicModel = AbstractModel.extend({
})
.then(function () {
_.each(records, function (record) {
+ // discard any changes to prevent creating a new record with auto-save
+ self.discardChanges(record.id);
var parent = record.parentID && self.localData[record.parentID];
if (parent && parent.type === 'list') {
parent.data = _.without(parent.data, record.id);
diff --git a/addons/web/static/tests/views/form/form_view_tests.js b/addons/web/static/tests/views/form/form_view_tests.js
index ba3f1b14ee5..8a4d0ad4fc6 100644
--- a/addons/web/static/tests/views/form/form_view_tests.js
+++ b/addons/web/static/tests/views/form/form_view_tests.js
@@ -13307,4 +13307,50 @@ QUnit.module("Views", (hooks) => {
assert.verifySteps(['danger:Please click on the "save" button first']);
}
);
+
+ QUnit.test("prevent recreating a deleted record", async (assert) => {
+ serverData.models.partner.records.length = 1;
+
+ serverData.actions[1] = {
+ id: 1,
+ name: "Partner",
+ res_model: "partner",
+ type: "ir.actions.act_window",
+ views: [
+ [false, "list"],
+ [false, "form"],
+ ],
+ };
+ serverData.views = {
+ "partner,false,list": `
+