Из моделей импорта django.db, миграции ImportError: невозможно импортировать имена миграции

Итак, я начал испытывать некоторые проблемы с югом на моем веб-сервере Django. Команда Migrate не работает с этим выходом каждый раз:

from django.db import models, migrations

ImportError: cannot import name migrations 

(выше этого ошибка отображает маршрут к файлу, который не удалось перенести)

Моя версия Django - 1.5.1, а моя южная версия - 0.8.4

Самое сложное, что модуль django.db.migrations нигде не найден.

Любые идеи?

Ответы

Ответ 1

Миграции были введены в Django 1.7; вы используете 1.5.

Вот ссылка на документы, объясняющие это. Если вы используете более раннюю версию Django, South является наиболее популярным вариантом для переноса данных.


ИЗМЕНИТЬ

Таким образом, Django Rest Framework вызывает ошибку. Из их документации:

Приложение rest_framework.authtoken включает в себя как Django native миграции (для версий Django > 1.7) и южных миграций (для Django версии < 1.7), которые создадут таблицу authtoken.

Примечание. Из REST Framework v2.4.0 с использованием юга с Django < 1.7 требуется модернизация South v1.0 +

Вы должны обновить Юг за пределами своей версии от 0.8.4 до 1.0 +.

Ответ 2

Я думаю, что OP не импортировал миграции в script, который он писал, один из автоматических скриптов, созданных схемомиграцией, может вызвать проблемы.

Эта ошибка внезапно начала появляться для меня, где раньше работали миграции, и я обнаружил, что это не связано с версиями Django == 1.6.1 и South == 0.8.4, но с моей оболочкой, которая запутывается как к которому я пользовался virtualenv. Я отключил одну виртуальную среду с деактивацией и начал с другой с "workon" и выполнил схематизацию, чтобы изменить имя поля. Когда я бежал. /manage migrate, я получил ошибку. Я вышел из оболочки и снова начал виртуальную среду, и все было в порядке.

Ответ 3

Прежде всего, вы никогда не импортируете migrations. Это не модуль для импорта, это командный инструмент для выполнения.

Во-вторых, миграции были внесены в версию Django в версии 1.7, и вы говорите, что используете 1.5, поэтому вы не сможете ее использовать.

До Django 1.7 люди работали с Югом, потому что Юг дает вам возможность делать миграции в базах данных. С Django 1.7 вам больше не нужен South, потому что миграции уже включены в Django. Другими словами, Юг был включен в Django в версии 1.7.

Взгляните на эту ссылку: https://docs.djangoproject.com/en/1.7/topics/migrations/

Они объясняют, что они включали миграции в Django.

Собственно, последняя версия South - версия 1.0, и они объявили, что не выпустят больше версий, потому что они работают над версией Django 1.7, где был включен South. Они будут поддерживать текущую версию, но не добавят больше функций.

Взгляните на эту ссылку: http://south.readthedocs.org/en/latest/releasenotes/1.0.html

Они объясняют, что 1.0 является последней крупной версией Юга, потому что они работают над миграциями Django 1.7.