Если вам удобнее с Django ORM, чем с необработанным SQL, вы можете рассмотреть возможность использования Model -> BackupModel -> TestModel -> Model, где все, кроме последнего шага, могут выполняться без удаления данных.
def backup(InModel,OutModel):
in_objs = InModel.objects.all()
for obj in in_objs:
out_obj = OutModel.convert_from(InModel,obj)
out_obj.save()
Здесь вы просто должны убедиться, что во всех ваших моделях реализованы методы convert_from. Все они должны быть тривиальными преобразованиями, за исключением BackupModel -> TestModel. В других случаях ничего, кроме класса, не изменилось бы, все данные были сохранены одинаково.
Преимущество этого состоит в том, что перед тем, как вы переписываете все свои интерфейсы, вы можете поиграть с TestModel и убедиться, что ваши преобразования были такими, как вы думали. Если все идет не так, вы конвертируете из BackupModel-> Model, и все в порядке. В худшем случае вы отказываетесь от ORM в Django, запускаете обратно в SQL и просто переименовываете все таблицы, которые начинаются с backupmodel __ *, в модель __ * в вашей базе данных.
Отказ от ответственности: я никогда не делал этого.