Я работаю над аналогичной настройкой и собираюсь сохранить черновую запись в той же таблице, но с установленным флагом записи, называемой «черновик». Кроме того, исходная запись имеет поле «draft_id», в котором хранится идентификатор черновой записи.
Затем в модели, когда исходная запись загружается механизмом дисплея, она показывает это нормально. Но когда действия редактирования или предварительного просмотра пытаются загрузить запись, она проверяет поле «draft_id» и затем загружает другую запись, если она установлена.
Флаг "черновика" используется для сохранения списка, а действия других групп типа "поиск" также позволяют захватить черновики записей. Это также может быть решено с помощью более сложного SQL-запроса, но я не совсем хорош с SQL.