Импорт/миграция старых данных модели (Django 0.97) в Django 1.8 или выше

Как лучше всего перенести или импортировать данные из очень старого приложения Django (0.97) в относительно «современную» версию Django (1.8)?

Приложение (если его можно так назвать) представляет собой не более чем серию моделей и несколько простых представлений. Пользователи в основном обращались к нему через пользовательский интерфейс администратора (я знаю, я знаю). Так что с точки зрения кода для конвертации очень мало. Я обновил файл models.py, чтобы он был совместим с версией 1.8, и теперь я могу без труда запустить пустой экземпляр приложения.

Однако у меня возникают проблемы, когда я пытаюсь получить старые данные в системе. Я думал, что попробую dumpdata/loaddata, но не ожидал, что это сработает (и это не сработало). Я получаю ряд ошибок в этих строках:

django.db.utils.IntegrityError: Problem installing fixture 
'olddata.json': Could not load contenttypes.ContentType(pk=6):
 duplicate key value violates unique constraint
"django_content_type_app_label_5fd9156b761d2158_uniq"
DETAIL:  Key (app_label, model)=(contenttypes, contenttype)
already exists.

Прежде чем погрузиться в глубины файла экспорта, я хочу убедиться, что я на правильном пути. Есть лучший способ сделать это?


person DrFyzziks    schedule 27.03.2018    source источник
comment
Похоже, вы на правильном пути. Возможно, вы захотите опубликовать свои модели и образец olddata.json, чтобы дать нам лучшее представление. Ошибка, которую вы получаете, говорит о том, что вы пытаетесь нарушить уникальное ограничение. Это подразумевает либо: 1. ваши новые модели имеют неправильное уникальное ограничение/первичный ключ, либо 2. ваш olddata.json каким-то образом дублирует PK/уникальные данные (плохой экспорт и т. д.).   -  person wholevinski    schedule 27.03.2018
comment
попробуйте экспортировать определенные таблицы и импортировать их в новую базу данных, например:   -  person Dimitris Kougioumtzis    schedule 27.03.2018


Ответы (1)


Спасибо вам обоим. Похоже, что проблема заключалась в экспорте json из 0.97. Я сделал полный экспорт и импорт XML и столкнулся только с одной ошибкой с одной записью, содержащей некоторый XML-подобный контент, который вызвал некоторые проблемы с парсером XML - легко исправить.

Похоже, что версия dumpdata 0.97 выводит json, который не полностью поддерживается Django 1.8.

person DrFyzziks    schedule 27.03.2018