2015-05-09 4 views
0

У меня есть проект python с использованием django restframework. Он начал использовать базу данных sqlite. Теперь я изменил его на postgresql. Все данные заменяются, и в проекте теперь используется база данных postgresql. Все работает отлично.manage.py migrate не обнаруживает изменений

Но теперь мне пришлось что-то изменить в моем проекте python. Мне пришлось удалить некоторое поле в модели (так называемый «продукт»). Поэтому после этого я проверил рефаймы django в своем браузере, и поле исчезло. Поэтому поле для моего бэкэнда больше не существовало. Все отлично, но когда я попытался добавить новый продукт, я получаю сообщение об ошибке. Потому что моя база данных все еще ожидает, что я закрою удаленное поле.

Поле по-прежнему в моей базе данных, но оно не описано в 0001_initial.py. Итак, я думаю, что makemigrations выполнили свою работу, но миграция не удалась?

я уже сделал следующее:

python manage.py makemigrations 
python manage.py migrate 

А также

python manage.py makemigrations (changed app) 
python manage.py migrate 

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

ответ

1

Миграции - совокупная отчетность. Первоначальная миграция описывает состояние вашей базы данных при ее первоначальном создании. Последующие изменения описываются дополнительными файлами миграции, каждый из которых переносит вашу базу данных в состояние в момент создания миграции.

Итак, когда вы запустите makemigrations, будет создана миграция 0002, которая будет содержать код для удаления вашего поля.

Смежные вопросы