Миграция моделей в Django с помощью South

Команда ./manage.py syncdb в django предназначена только для создания новых таблиц на основе моделей. Добавлять или удалять поля из существующей таблицы она не будет, ровно как и вносить изменения в существующие поля. Эти манипуляции остаются за разработчиком приложения. Однако есть удобное средство миграции, South

  1. Устанавливаем south
    pip install south
  2. Добавляем в ‘INSTALLED_APPS’ в вашем settings.py
    INSTALLED_APPS = (
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.sites',
        'django.contrib.messages',
        'django.contrib.staticfiles',
         'django.contrib.admin',
         'django.contrib.admindocs',
         'south',
  3. Выполняем syncdb
    python manage.py syncdb
  4. Инициализируем первую миграцию
    python manage.py schemamigration myapp --initial
  5. Выполняем миграцию
    python manage.py migrate myapp

Последующие миграции

  1. python manage.py schemamigration myapp --auto
  2. python manage.py migrate myapp

Если появилась ошибка django.db.utils.DatabaseError: (1050, «Table ‘‘ already exists»), делаем так

  1. Проверяем, что модель соответствует таблице в базе данных
  2. Выполняем
    ./manage.py migrate myapp --fake
  3. Теперь можно выполнять миграцию
    ./manage.py migrate myapp

Либо удалите соответствующую миграцию.

Добавить комментарий

Ваш адрес email не будет опубликован.