Воссоздайте таблицы для одного приложения Django 1.7.

Много лун назад я использовал такие команды, как ./manage.py reset appname до DROP, а затем воссоздавал таблицы базы данных для одного приложения. Это было удобно, когда другие разработчики непреднамеренно, но вручную сломали что-то в базе данных, и вы хотели сбросить все обратно, не затрагивая другие приложения (или нуждаясь в длительном процессе дампа/загрузки).

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

Как сбросить таблицы для одного приложения (одно с миграциями)?


person Oli    schedule 24.08.2015    source источник
comment
возможный дублировать. Команда была переименована в flush. Это не работает для одного приложения. это бэкпорт сброса с поддержкой одного приложения   -  person Ward    schedule 24.08.2015
comment
Если он не слишком сломан, думаю, можно manage.py migrate <app> zero.   -  person spectras    schedule 24.08.2015
comment
@spectras Это (наряду со стандартной миграцией) отлично справилось со своей задачей. Отправьте ответ, и я приму.   -  person Oli    schedule 24.08.2015


Ответы (1)


Если ваша подсистема миграции Django не сломана сама по себе, обычный способ сбросить приложение — запустить manage.py migrate <app> zero.

Это запустит все миграции приложения в обратном направлении, поэтому следует отметить несколько моментов:

  • если некоторые миграции приложения необратимы, процесс завершится ошибкой. Не должно происходить нормально, поскольку Django создает только обратимые миграции. Однако вы можете создавать необратимые файлы самостоятельно — обычно при переносе данных.

  • если какое-то другое приложение зависит от этого приложения, оно также будет перенесено в обратном направлении до последней миграции, которая не зависела от него.

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

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

person spectras    schedule 24.08.2015