Como migrar de volta da migração inicial no Django 1.7?

117

Criei um novo aplicativo com alguns modelos e agora percebi que alguns dos modelos estão mal pensados. Como não efetuei o commit do código, o sensato seria migrar o banco de dados para o último estado bom e refazer a migração com modelos melhores. Nesse caso, o último estado bom é o banco de dados em que o novo aplicativo não existe.

Como posso migrar de volta da migração inicial no Django 1.7?

Em Southum poderia fazer:

python manage.py migrate <app> zero

Que limparia <app>do histórico de migração e removeria todas as tabelas de <app>.

Como fazer isso com as migrações do Django 1.7?

Seppo Erviälä
fonte

Respostas:

197

Você pode fazer o mesmo com o Django 1.7+ também:

python manage.py migrate <app> zero

Isso limpa <app>do histórico de migração e descarta todas as tabelas de<app>

Veja a documentação do django para mais informações.

ChillarAnand
fonte
7
Isso está documentado em algum lugar? A documentação do Django sobre migrações está faltando muito ...
rnevius
2
Doc pode ser encontrado na página de documentação django-admin e manage.py: docs.djangoproject.com/en/1.7/ref/django-admin/…
n__o
@não, obrigado. Resposta atualizada.
ChillarAnand
1
Como você lidaria com a falha da restrição IntegrityError: NOT NULL?
wasabigeek
2
Apenas tentei isso no Django 1.9 e funcionou bem também. Obrigado
Dário
9

você também pode usar o número da versão:

python manage.py migrate <app> 0002

Fonte: https://docs.djangoproject.com/en/1.7/ref/django-admin/#django-admin-migrate

jsh
fonte
5
A pergunta feita é sobre a migração de volta da migração inicial e o uso 0000não funciona
guival
entendo, posso ter entendido mal a pergunta (embora não seja IMHO particularmente bem escrito). por que você simplesmente não abandonaria o DB? bem
jsh
2
abandonar o banco de dados inteiro para uma tabela é um pouco exagero
guival