2015-05-29 4 views
8

Я удаляю ненужную таблицу и модель с нашего сайта Django. Я удалил все foriegn ключевые ссылки перед migrations.DeleteModel (...) называется, но я до сих пор я получаю следующее приглашение при запуске миграции:Удаление неиспользуемых моделей, устаревшие типы содержимого prompt

следующие типы контента являются устаревшими и должны быть удален:

myapp | MyDeletedModel 

Любые объекты, связанные с этими типами контента с помощью внешнего ключа также будут удалены. Вы действительно хотите удалить эти типы контента? Если вы не уверены, ответьте «нет».

Type 'yes' to continue, or 'no' to cancel: yes 

Я смущен, почему я получаю эту подсказку, есть ли способ я могу остановить эту подсказку показывать, когда мы идем жить? мы используем среду CI, где у нас нет пользователей, доступных для ответа «да» или «нет»

Благодаря

ответ

11

Структура ContentTypes содержит ссылки на модели таблиц. В этом случае у вас есть устаревшая ссылка на только что удаленную таблицу. Это прекрасно, чтобы ответить yes и удалить устаревший тип контента. Это была бы другая история, если бы вы переименовали таблицу с указателем GenericForeignKey, и в этом случае другие объекты имели бы ForeignKey с этим ContentType, и удаление будет каскадом вдоль этих отношений.

В живой среде вы можете передать опцию --noinput, чтобы отменить это приглашение. Однако он будет по умолчанию равен no. Обычно не проблема, чтобы иметь некоторые устаревшие типы контента.

+0

Спасибо @knbk, я проверю у нашего ci парня, чтобы посмотреть, как мы запускаем миграции для --noinput, если мы ответим на это один раз, запомнит ли он ответ или нам будет предложено каждую миграцию? –

+0

Вы будете получать подсказки при каждом запуске миграции, которая переименовывает или удаляет модель. – knbk

+0

ОК, я смотрю таблицу django_contenttype. Я больше не вижу строку для таблицы, когда я отвечал «да». но если я ответу «нет», он предложит следующую миграцию, не так ли? –

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