2014-11-27 2 views
7

, поэтому я уже создал модели в Django для своего db, но теперь хочу переименовать модель. Я изменил имена в классе Meta, а затем выполнил миграцию/миграцию, но это создает только новые таблицы.Переименование моделей (таблиц) в Django

Я также попытался schemamigration, но и не работает, я использую Django 1.7

Вот моя модель

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 

Приветствия

ответ

17

Django не знает, что вы пытаетесь делать. По умолчанию он удалит старую таблицу и создаст новую. Вам нужно создать пустую миграцию, а затем использовать эту операцию (Вы должны написать его самостоятельно):

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

Что-то вроде этого:

class Migration(migrations.Migration): 

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

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

Я думаю, что мой Джанго рассинхронизирован , ошибка «У ваших моделей есть изменения, которые еще не отражены в миграции, и поэтому не будут применяться. Запустите« manage.py makemigrations », чтобы выполнить новые миграции, а затем повторно запустить« manage.py migrate »для применения они «Я удалил все 0001_initial.py, а затем создал миграцию с моим новым классом. –

+0

Я хочу переименовать таблицу, потому что я переименовываю приложение. Как я могу это достичь? –

+2

Итак, чтобы создать пустую миграцию: './manage.py makemigrations --empty myapp'. – Ehvince

Смежные вопросы