Recentemente, atualizei meu modelo, adicionei um BooleanField a ele, mas quando o faço python manage.py syncdb, ele não adiciona o novo campo ao banco de dados do modelo. Como posso consertar isso ?
Recentemente, atualizei meu modelo, adicionei um BooleanField a ele, mas quando o faço python manage.py syncdb, ele não adiciona o novo campo ao banco de dados do modelo. Como posso consertar isso ?
Respostas:
Django tem suporte embutido para migrações - dê uma olhada na documentação .
Django não suporta migrações prontas para uso. Existe um aplicativo plugável para Django que faz exatamente isso, e funciona muito bem. Chama-se Sul .
Django atualmente não faz isso automaticamente. Suas opções são:
python manage.py sql (appname), encontre a linha adicionada para o campo e adicione-a manualmente usando o alter tablecomando SQL. (Isso também permitirá que você escolha os valores do campo para seus registros atuais.)Conforme sugerido na resposta principal, tentei usar o South e, após uma hora de frustração com erros de migração obscuros, decidi usar o Django Evolution .
Acho que é mais fácil começar do que o South, e funcionou perfeitamente na primeira vez que digitei ./manage.py evolve --hint --execute, então estou feliz com isso.
Não usei o django por um tempo, mas pareço lembrar que o syncdb executa comandos alter nas tabelas db. você tem que largar a tabela e executar novamente e ela será criada novamente.
editar: desculpe, NÃO realiza alteração.
alter tablecomandos, está executando create tablecomandos.
Em Django 1.6
No início, corremos - python manage.py sql <app name>
Então temos que correr - python manage.py syncdb
Se você executa o Django com Apache e MySQL, reinicie o apache após fazer a migração com makemigrations .