如何在 Django 中更改模型字段名称?

问题描述 投票:0回答:1

我在 Django 项目中创建了一个模型。我错误地设置了

date_created
date_updated
字段,如下所示:

class Article(models.Model):
    date_created = models.DateTimeField(auto_now=True)
    date_updated = models.DateTimeField(auto_now_add=True)

我应该将 date_created 设置为

auto_now_add=True
,将 date_updated 设置为
auto_now=True
。现在,当我想将模型名称彼此更改为

class Article(models.Model):
    date_updated = models.DateTimeField(auto_now=True)
    date_created = models.DateTimeField(auto_now_add=True)

Django 检测到我刚刚更改了字段的定义并创建了一个迁移

    operations = [
        migrations.AlterField(
            model_name='article',
            name='date_created',
            field=models.DateTimeField(auto_now_add=True),
        ),
        migrations.AlterField(
            model_name='article',
            name='date_updated',
            field=models.DateTimeField(auto_now=True),
        ),
    ]

但我实际上对它们进行了“重命名”。当我手动将迁移设置为 RenameField 时,它根本不起作用,因为 Django 检测到我尚未为所做的更改创建迁移。

用不同的名称重命名可能是解决方案,但我需要保留字段名称。这种情况我能做什么?

django
1个回答
0
投票
编辑

迁移文件并重命名三个: operations = [ migrations.RenameField( model_name='article', old_name='date_created', name='date_updated1', ), migrations.RenameField( model_name='article', old_name='date_updated', name='date_created', ), migrations.RenameField( model_name='article', old_name='date_updated1', name='date_updated', ), ]

这最终将交换两个字段。

© www.soinside.com 2019 - 2024. All rights reserved.