您将如何创建“手动”django 迁移?

2024-05-13

我发现我可以使用 django 项目中的 postgres 数据库设置列的默认值migrations.RunSQL('some sql').

我目前正在通过添加列 makemigrations,然后删除列 makemigrations,然后手动修改生成的迁移文件来执行此操作。

我尝试复制旧的迁移文件,然后删除旧的代码,这样就可以运行新的 sql,但出现了一些奇怪的错误。

CommandError: Conflicting migrations detected; multiple leaf nodes in the migration graph: (0067_auto_20180509_2327, 0068_auto_20180514_0707 in csmu).
To fix them run python manage.py makemigrations --merge

您将如何创建“手动”django 迁移?


您可以通过运行以下命令来创建手动迁移:

python manage.py makemigrations app_name --name migration_name --empty

Where app_name对应于您要添加迁移的项目中的应用程序。请记住,Django 管理项目和应用程序(项目是特定网站的配置和应用程序的集合。一个项目可以包含多个应用程序。一个应用程序可以位于多个项目中。) 和--empty标志是创建一个迁移文件,您必须在其中添加手动迁移。

例如,在一个项目中,您有一个名为api只有一个迁移文件0001_initial.py跑步:

python manage.py makemigrations api --name migration_example --empty

将创建一个名为0002_migration_example.py目录下api/migrations/看起来像:

# Generated by Django 2.2.10 on 2020-05-26 20:37

from django.db import migrations


class Migration(migrations.Migration):

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

    operations = [
    ]

你应该添加migrations.RunSQL('some sql').在操作括号内,例如:

    operations = [
      migrations.RunSQL('some sql')
    ]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

您将如何创建“手动”django 迁移? 的相关文章

随机推荐