Di recente ho aggiornato il mio modello, aggiunto un BooleanField ad esso, tuttavia quando lo faccio python manage.py syncdb
, non aggiunge il nuovo campo al database per il modello. Come posso risolvere questo problema?
Di recente ho aggiornato il mio modello, aggiunto un BooleanField ad esso, tuttavia quando lo faccio python manage.py syncdb
, non aggiunge il nuovo campo al database per il modello. Come posso risolvere questo problema?
Risposte:
Django ha il supporto integrato per le migrazioni: dai un'occhiata alla documentazione .
Django non supporta le migrazioni pronte all'uso. C'è un'app collegabile per Django che fa esattamente questo, e funziona alla grande. Si chiama Sud .
Django attualmente non lo fa automaticamente. Le tue opzioni sono:
python manage.py sql (appname)
, trova la riga aggiunta per il campo e aggiungila manualmente usandoalter table
comando SQL. (Ciò ti consentirà anche di scegliere i valori del campo per i tuoi record correnti.)Come suggerito nella risposta in alto, ho provato a utilizzare South , e dopo un'ora di frustrazione con oscuri errori di migrazione ho deciso di andare con Django Evolution invece.
Penso che sia più facile iniziare con South, e ha funzionato perfettamente la prima volta che ho digitato ./manage.py evolve --hint --execute
, quindi sono contento.
Non ho usato django per un po ', ma mi sembra di ricordare che syncdb esegue comandi di alterazione sulle tabelle db. devi rilasciare la tabella, quindi eseguire di nuovo e verrà creata di nuovo.
modifica: scusa NON esegue alter.
alter table
comandi, esegue create table
comandi.
In django 1.6
All'inizio abbiamo eseguito - python manage.py sql <app name>
Quindi dobbiamo correre - python manage.py syncdb
Se esegui Django con Apache e MySQL, riavvia apache dopo aver eseguito la migrazione con makemigrations .