Как сохранить предыдущие данные при удалении новых колонок или удалении существующей таблицы в моделях Django?

Я разрабатываю ERP с группой разработчиков и нам нужно сохранить данные клиентов при удалении существующих колонок или таблиц для моделей Dajngo и DB.

Например:

Я добавил столбец с именем columns1 и дал клиенту релизный продукт Системы и затем, но через неделю мне пришлось удалить этот новый column, но у клиента есть данные, хранящиеся в столбце column1, вот как я могу сохранить данные или решить эту ситуацию.

Другой пример:

У меня есть новая колонка column2 с unique attr, но здесь у клиента есть данные, но я не могу добавить новую колонку без разрешения хранить нулевые данные, но в этой ситуации я не хочу разрешать нулевые данные в колонке column2 и я не могу поставить default attr, потому что она имеет unique attr.

Как решить эти вопросы в Django.

я думаю вам нужно добавить одно булево поле в таблице имя поля delete если вы хотите удалить колонку не удаляйте ее поставьте значение поля delete в true. при запросе добавьте фильтр с условием delete = false. я думаю это будет работать для 1-го условия

Миграции данных

помогут вам решить эти проблемы. Вам придется писать сценарии в миграциях, чтобы убедиться, что данные находятся в нужном состоянии, прежде чем накладывать ограничения, например, проверить column2, чтобы убедиться, что данные уникальны, и перейти к добавлению ограничения unique. Обратитесь к этому учебнику для получения дополнительной информации

Обычно в таких случаях необходимо создать резервную копию базы данных в sql файл, например https://dev.mysql.com/doc/mysql-backup-excerpt/5.7/en/mysqldump-sql-format.html.

После резервного копирования вы можете изменять структуру базы данных как угодно, не беспокоясь о потере данных (поскольку вы сохранили их в резервной копии sql). Если вы хотите откатиться к старой версии, вы можете просто применить старую БД (не забудьте сделать резервную копию последней версии базы данных!). Или если вы хотите заново применить удаленный столбец, просто проверьте данные резервной копии базы данных.

Вернуться на верх