我在我的Django项目中创建了一个模型.由于错误,我将date_createddate_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),
        ),
    ]

但我实际上有renamed个.当我手动将迁移设置为RenameField时,它根本不起作用,因为Django检测到我尚未为我所做的更改创建migrations.

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

推荐答案

Edit具有三个重命名的迁移文件:

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',
    ),
]

因此,这最终将交换这两个字段.

Django相关问答推荐

我找不到为什么我的DRF登录测试没有按预期工作

如何在 Django 中设置与 Session 相关的字段

try 在 django 中发送验证邮箱,出现错误

Django如何在没有ctrl点击的情况下允许多选

Django 相当于子查询

如何在 Django 模板视图中显示我的数据?

Django InlineModelAdmin:部分显示内联模型并链接到完整模型

Django {{ MEDIA_URL }} 空白 @DEPRECATED

可以在基于 Django 类的视图中设置实例变量吗?

模型 Django 中的 ID 字段

Django -- User.DoesNotExist 不存在?

如何在 Django Rest Framework SimpleRouter 上使斜杠可选

带有 Django 和 Python 的 Atlassian Bamboo - 可能吗?

从 virtualenv 中,pip freeze > requirements.txt 给出了一堆垃圾!如何修剪它?

ImportError:升级到 Django 4.0 后无法从 'django.conf.urls' 导入名称 'url'

Django查询否定

Table doesn't exist表不存在

Django 多项 Select 字段/复选框 Select 多个

Python Django 的多线程

判断列表 django 模板中是否存在