La soluzione di mmcnickle può funzionare e sembra ragionevole ma preferisco un processo in due fasi. Nel primo passaggio cambi il nome della tabella.
nel modello assicuratevi di avere il vostro nuovo nome della tabella in:
class Meta:
db_table = new_table_name'
Poi, come mmcnickle suggerito, creare una migrazione personalizzata:
python manage.py schemamigration xyz migration_name --empty
Si può leggere di più su questo qui: https://docs.djangoproject.com/en/dev/ref/models/options/
Ora con la tua migrazione personalizzata aggiungi anche la linea per rinominare il tuo tavolo avanti e indietro:
Questo può essere sufficiente per migrare e modificare il nome della tabella, ma se si è utilizzato il nome della tabella personalizzata Classe Meta prima di allora sarà necessario fare un po 'di più. Quindi direi di norma, per sicurezza, effettuare una ricerca nel file di migrazione per "old_table_name" e modificare le voci che si trovano nel nuovo nome della tabella. Ad esempio, se in precedenza si utilizzava il nome della tabella Classe Meta personalizzato, è probabile vedere:
'Meta': {'object_name': 'ModelNameYouWillChangeNext', 'db_table': "u'old_table_name'"},
quindi avrai bisogno di cambiare il vecchio nome della tabella a quello nuovo.
Ora è possibile eseguire la migrazione con:
python manage.py migrate xyz
A questo punto la vostra applicazione dovrebbe funzionare dal momento che tutto quello che hai fatto è cambiare il nome della tabella e dire Django a cercare il nuovo nome della tabella.
Il secondo passaggio consiste nel modificare il nome del modello. La difficoltà dipende molto dalla tua app, ma in pratica devi solo modificare tutto il codice che fa riferimento al nome del vecchio modello per il codice che fa riferimento al nome del nuovo modello. Probabilmente hai anche bisogno di cambiare alcuni nomi di file e nomi di directory se hai usato il vecchio nome del modello in loro per scopi organizzativi.
Dopo aver eseguito questa operazione, l'app dovrebbe funzionare correttamente. A questo punto il tuo compito è praticamente completato e la tua app dovrebbe funzionare correttamente con un nuovo nome di modello e un nuovo nome di tabella. L'unico problema con cui utilizzerai South è la prossima volta che crei una migrazione utilizzando la sua funzione di rilevamento automatico, tenterà di eliminare la vecchia tabella e crearne una nuova da zero perché ha rilevato il tuo nuovo nome di modello. Per risolvere questo problema è necessario creare un'altra migrazione personalizzata:
python manage.py schemamigration xyz tell_south_we_changed_the_model_name_for_old_model_name --empty
La cosa bella è qui non fate niente dal momento che avete già cambiato il nome del modello in modo da Sud raccoglie questo. Basta migrare con "pass" nella migrazione avanti e indietro:
python manage.py migrate xyz
Nulla è stato fatto e del Sud ora si rende conto che sia aggiornato. Prova:
python manage.py schemamigration xyz --auto
e si dovrebbe vedere rileva nulla è cambiato
e si desidera questo fatto in amministrazione? in tal caso http://stackoverflow.com/questions/7413488/where-do-i-customize-the-heading-for-the-modeladmin-view/7414247#7414247 dovrebbe aiutare – Pannu
Sì, molto vero! ma ho ancora bisogno di cambiare i nomi dei modle, per aderenza a pep-8. – whatf