Django – Evolução do modelo de dados…


Boa tarde!!

Quem nunca fez um projeto, e após tudo pronto, sincronizado o banco de dados, precisou alterar, excluir ou adicionar um campo do models.py ??
Se precisarmos alterar o tamanho de um campo! Pronto… Fud$$@#$%#¨%!!!
Se precisarmos excluir um campo!! Fud$#¨%*@#!!!!
Se precisarmos adicionar um campo!!! Fud!$%&*(¨*!!!

Eis aqui o propósito desta dica! Mais uma vez, navegando na internet, encontrei um ótimo “plugin” para o django que faz este trabalho pra gente!!
E ele se chama django-evolution!!!

Quando alteramos, adicionamos ou excluimos algum campo no nosso modelo de dados, podemos fazer as alterações por intermédio deste cara!!

Primeiramente, vamos baixá-lo:

Link – Ele está no code.google.com

Depois, acesse a pasta onde foi feito o download e instale o mesmo.
setup.py install

Django-evolution instalado, vamos as configurações.

No arquivo settings.py localize o INSTALLED_APPS e adicione a aplicação django-evolution.

INSTALLED_APPS = (
‘django_evolution’,
)

Agora, vamos sincronizar o banco de dados: manage.py syncdb

Django evolution - syncdb
Feito isto, podemos começar a brincar 😉

O comando para verificar se houveram modificações em seus models é: manage.py evolve

manage.py evolve
Segue um print dos comandos disponíveis…

manage.py help evolve
Agora, faça qualquer modificação em seu models.py, no meu, irei adicionar um campo varchar com tamanho de 1 só pra testar e modificar o tamanho de outro para exemplo ok 😉

Modificando o model ;)
Agora, vamos salvar e rodar o comando manage.py syncdb de novo…

Syncdb again !!!
Ele já nos avisou que mudou alguma coisa e que é necessário uma “evolução” 😉

Pronto, então vamos fazer o que ele falou né… (Manda quem pode, obedece quem tem juízo!!) 😉
O comando que vamos usar agora é o manage.py evolve –hint para que possamos ver o que foi alterado!

vendo as mudanças
Opa!! Eis aqui um detalhe! Lá em cima, quando criei o novo campo, eu coloquei como default um valor qualquer, pois na hora de fazer a “evolução” ele não deixa que fique em branco… Não sei  bem porque! Tentei colocar o campo como blank = True e nada funfou! Enfim, é melhor isto do que ter que destruir o bd ou alterar na mão, principalmente se forem muitos campos!!!
Para que ele faça as devidas alterações, vamos executar o comando:

Efetuando as alterações
Se você colocar yes, ele faz todo o trabalho…

foi...
Agora, como mineiro (desconfiado pra kcete!), vamos conferir no banco de dados…

conferindo
Tudo criado… Agora, vamos fazer uma alteração em nosso campo para ver se o trem funfa mesmo!!
Voltando ao models… Vamos lá !

evolution_10
E vamos executar o syncdb para ver o resultado. Depois vamos executar o comando manage.py evolve –hint para ver o que mudou 😉

evolution_11
Como pudemos ver, ele já está apontando as alterações feitas… Vamos executar as modificações…

evolution_12
E, mais uma vez, vamos conferir o banco de dados…

evolution_13
Pronto!!! Estamos sincronizados!!

Bom, minha opinião é que este é um ótimo “plugin” para o Django, tendo em vista que grandes alterações no nosso models pode demandar muito tempo se tivermos que criar as tabelas, alterar tamanhos na unha.

Para salientar, este projeto ainda está em desenvolvimento e só funciona nas versões do Django 1.0 para cima!
Também existem várias coisas que ainda não são cobertas por esta solução, portanto, para que você se informe sobre tudo, leia atentamente a documentação do django-evolution!!!

Segue o link da documentação que está em txt…

Abraços… Espero que possa ser útil!!!

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: