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?

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.


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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.