在Django中重命名模型(表)

10

我已经在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

干杯

1个回答

25

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

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

类似这样:

from django.db import migrations

class Migration(migrations.Migration):

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

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

3
创建空迁移的命令是:./manage.py makemigrations --empty myapp。注意不要改变原意,但需要使翻译更通俗易懂。 - Ehvince
2
NameError: 名称 'operations' 未定义。文档没有任何示例,因此不是很有用。 - CoderGuy123
2
根据这个问题,似乎上述列表中的operations应更改为migrations。我更改了那个词,然后我的代码就能正常工作了。 - CoderGuy123
@Deleet 显然,对于我的例子,你应该导入 from django.db.migrations import operations - coldmind
尝试过了,没有起作用。按照上述描述替换单词就可以了。 - CoderGuy123
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接