【问题标题】:Renaming models(tables) in Django在 Django 中重命名模型(表)
【发布时间】:2015-01-26 07:30:48
【问题描述】:

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

我也尝试过架构迁移,但也没有工作,我使用的是 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

干杯

【问题讨论】:

    标签: python django migrate renaming makemigrations


    【解决方案1】:

    Django 不知道你在做什么。默认情况下,它将删除旧表并创建新表。 需要创建一个空的migration,然后使用这个操作(需要自己写):

    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")
        ]
    

    【讨论】:

    • 我认为我的 django 不同步,错误“您的模型具有尚未反映在迁移中的更改,因此不会应用。运行“manage.py makemigrations”以创建新的迁移,然后重新运行 'manage.py migrate' 以应用它们”我已经删除了所有 0001_initial.py 然后用我的新类创建了一个迁移..
    • 我想重命名一个表,因为我正在重命名应用程序。我怎样才能做到这一点?
    • 所以要创建一个空迁移:./manage.py makemigrations --empty myapp.
    • NameError: name 'operations' is not defined。该文档没有任何示例,因此不是很有用。
    • this question之后,上面的operations(列表内)似乎应该是migrations。我改变了那个词,我的代码就起作用了。
    猜你喜欢
    • 2011-07-23
    • 2015-11-10
    • 1970-01-01
    • 1970-01-01
    • 2018-01-20
    • 2018-03-31
    • 2011-08-18
    • 2020-01-10
    • 2011-10-01
    相关资源
    最近更新 更多