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 ?
python
django
django-models
Hellnar
fonte
fonte
Respostas:
Do Django 1.7 em diante
Django tem suporte embutido para migrações - dê uma olhada na documentação .
Para Django 1.6 e anteriores
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 .
fonte
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 oalter table
comando SQL. (Isso também permitirá que você escolha os valores do campo para seus registros atuais.)fonte
Siga esses passos:
fonte
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.fonte
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.
fonte
alter table
comandos, está executandocreate table
comandos.Em Django 1.6
No início, corremos -
python manage.py sql <app name>
Então temos que correr -
python manage.py syncdb
fonte
Se você executa o Django com Apache e MySQL, reinicie o apache após fazer a migração com makemigrations .
fonte