2014-11-27 19 views
7

quindi ho già creato modelli in Django per il mio db, ma ora voglio rinominare il modello. Ho cambiato i nomi nella classe Meta e quindi ho effettuato migrazioni/migrazione, ma questo crea solo nuove tabelle.Rinominare i modelli (tabelle) in Django

Ho anche provato schemamigration ma anche non lavorare, sto usando Django 1.7

Ecco il mio modello

class ResultType(models.Model): 
    name = models.CharField(max_length=150) 
    ut = models.DateTimeField(default=datetime.now) 
    class Meta: 
     db_table = u'result_type' 

    def __unicode__(self): 
     return self.name 

Acclamazioni

risposta

17

Django non sa, quello che si sta cercando di fare. Di default cancella la vecchia tabella e crea nuova. È necessario creare una migrazione vuota, quindi utilizzare l'operazione (è necessario scrivere da soli):

https://docs.djangoproject.com/en/stable/ref/migration-operations/#renamemodel

Qualcosa di simile a questo:

class Migration(migrations.Migration): 

    dependencies = [ 
     ('yourappname', '0001_initial'), 
    ] 

    operations = [ 
     migrations.RenameModel("OldName", "NewName") 
    ] 
+0

Penso che il mio Django non è sincronizzato , errore "I tuoi modelli hanno modifiche che non si riflettono ancora in una migrazione e pertanto non verranno applicate. Esegui" manage.py makemigrations "per effettuare nuove migrazioni, quindi riesegui" manage.py migrate "per applicare "Ho eliminato tutto il 0001_initial.py e poi ho creato una migrazione con la mia nuova classe .. –

+0

Voglio rinominare un tavolo perché sto rinominando l'app. Come posso ottenerlo? –

+2

Quindi, per creare una migrazione vuota: './manage.py makemigrations --empty myapp'. – Ehvince