Команда ./manage.py syncdb в django предназначена только для создания новых таблиц на основе моделей. Добавлять или удалять поля из существующей таблицы она не будет, ровно как и вносить изменения в существующие поля. Эти манипуляции остаются за разработчиком приложения. Однако есть удобное средство миграции, South
- Устанавливаем south
pip install south
- Добавляем в ‘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',
- Выполняем syncdb
python manage.py syncdb
- Инициализируем первую миграцию
python manage.py schemamigration myapp --initial
- Выполняем миграцию
python manage.py migrate myapp
Последующие миграции
-
python manage.py schemamigration myapp --auto
-
python manage.py migrate myapp
Если появилась ошибка django.db.utils.DatabaseError: (1050, «Table ‘
- Проверяем, что модель соответствует таблице в базе данных
- Выполняем
./manage.py migrate myapp --fake
- Теперь можно выполнять миграцию
./manage.py migrate myapp
Либо удалите соответствующую миграцию.