2014-11-27 11 views
7

so habe ich bereits Modelle in Django für meine db erstellt, aber jetzt wollen das Modell umbenennen. Ich ändere die Namen in der Meta-Klasse und mache dann Migrationen/migrieren, aber das erzeugt nur brandneue Tabellen.Umbenennen Modelle (Tabellen) in Django

ich auch schemamigration aber auch nicht funktioniert habe versucht, ich bin mit Django 1.7

Hier ist mein Modell

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 

Prost

Antwort

17

Django nicht weiß, was Sie versuchen zu machen. Standardmäßig wird alte Tabelle gelöscht und neue erstellt. Sie benötigen eine leere Migration erstellen, dann diesen Vorgang verwenden (Sie müssen es selbst schreiben):

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

Etwas wie folgt aus:

class Migration(migrations.Migration): 

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

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

ich meine django denke nicht synchron ist , Fehler "Ihre Modelle haben Änderungen, die sich noch nicht in einer Migration widerspiegeln und daher nicht angewendet werden. Führen Sie 'manage.py makemigrations' aus, um neue Migrationen durchzuführen, und führen Sie dann 'manage.py migrate' erneut aus sie "Ich habe alle 0001_initial.py gelöscht und dann eine Migration mit meiner neuen Klasse erstellt .. –

+0

Ich möchte eine Tabelle umbenennen, weil ich die App umbenenne. Wie kann ich das erreichen? –

+2

Um eine leere Migration zu erstellen: './manage.py makemigrations --empty myapp'. – Ehvince