【问题标题】:How to change model class name without losing data?如何在不丢失数据的情况下更改模型类名称?
【发布时间】:2017-06-18 22:04:12
【问题描述】:

如何在不丢失数据的情况下更改 Django 中的模型类名称?有人知道吗?非常感谢大家提前提供的帮助。

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    如果您只是在您的 models.py 文件中更改模型名称,“makemigrations”命令通常足够聪明,可以选择它。如果您确认,它将询问您是否更改了模型名称并创建迁移以相应地重命名表。

    【讨论】:

      【解决方案2】:

      通常在大多数情况下,django makemigrations 会自行处理模型的重命名,但如果它不这样做并将其创建为删除和添加新模型,您可能必须在迁移文件中手动添加 migrations.RenameModel。 Django Rename Model

      【讨论】:

        【解决方案3】:

        建议的两个回复没有回答我的情况。

        如果你想从:

        class OldClassName(models.Model):
            class meta:
                db_table = 'unchanged_table_name'
        

        到:

        class NewClassName(models.Model):
            class meta:
                db_table = 'unchanged_table_name'
        

        在迁移中没有 django 理解“我可以看到您删除了一个模型并希望我创建一个新模型”

        我是这样去的:

        • 在您的模型出现的第一次迁移 ('migration.CreateModel') 中,将其更新为“name='NewClassName'”
        • 然后,在此后的所有其他迁移中,更新与此特定模型相关的“model_name='newclassname'”
        • 不要忘记在其他“AddField(ForeignKey)”中对该模型的引用

        如果它是唯一的变化,你甚至不必运行makemigrations,Django 应该什么也看不到。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-23
          • 1970-01-01
          • 1970-01-01
          • 2012-03-20
          • 1970-01-01
          • 1970-01-01
          • 2019-03-29
          • 1970-01-01
          相关资源
          最近更新 更多