在Django中重命名模型(表)

Tob*_*een 8 python django migrate renaming makemigrations

所以我已经在我的数据库中为Django创建了模型,但现在想要重命名该模型.我已经更改了Meta类中的名称,然后进行迁移/迁移,但这只是创建了全新的表.

我也尝试过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
Run Code Online (Sandbox Code Playgroud)

干杯

col*_*ind 20

Django不知道,你想做什么.默认情况下,它将删除旧表并创建新表.您需要创建一个空迁移,然后使用此操作(您需要自己编写):

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

像这样的东西:

class Migration(migrations.Migration):

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

    operations = [
        migrations.RenameModel("OldName", "NewName")
    ]
Run Code Online (Sandbox Code Playgroud)

  • 所以要创建一个空迁移:`./manage.py makemigrations --empty myapp`. (2认同)
  • `NameError:名称'操作'未定义.文档没有任何示例,因此不太有用. (2认同)
  • 在[这个问题](http://stackoverflow.com/questions/25091130/django-migration-strategy-for-renaming-a-model-and-relationship-fields)之后,似乎`operations`(在列表中)上面应该是`迁移'.我改变了这个词,我的代码也运行了. (2认同)