Ответ 1
В Django 1.7 это на самом деле намного проще, чем вы думаете. Скажем, у вас есть приложение books
, с двумя моделями: Book
и BookReview
. Вы хотите удалить модель Book
.
- Удалите все ссылки на модель
Book
в вашем коде. Например, удалите полеForeignKey('books.Book')
в моделиBookReview
. Нет необходимости делать отдельную миграцию для этого изменения. - Удалите код для модели
Book
сbooks/models.py
. Теперь создайте миграцию (manage.py makemigrations
). Если вы посмотрите на сгенерированную миграцию, она должна включать операциюmigrations.DeleteModel
. -
Запустите автоматически сгенерированную миграцию (
manage.py migrate
), и вас спросят о соответствующихContentType
объектах, которые больше не нужны:Running migrations: Applying books.0002_auto_20150314_0604... OK The following content types are stale and need to be deleted: books | book Any objects related to these content types by a foreign key will also be deleted. Are you sure you want to delete these content types?
Вероятно, вы хотите удалить типы контента. Если вы не хотите, чтобы вас запрашивали для ввода, вы можете использовать
manage.py migrate --noinput
.Операция
DeleteModel
в этом переносе приведет к отбрасыванию таблицыbooks_book
в вашей базе данных, поэтому вам не придется беспокоиться о ручном очистке вообще.