您将如何创建 'manual' django 迁移?
How would you create a 'manual' django migration?
我发现我可以使用 migrations.RunSQL('some sql')
.
在 django 项目中为 postgres 数据库的列设置默认值
我目前通过添加列 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
您将如何创建 'manual' django 迁移?
您可以通过研究自动生成的迁移来了解如何进行迁移,例如:
class Migration(migrations.Migration):
dependencies = [
('app_details', '0001_initial'),
]
operations = [
migrations.AddField(
...,
),
migrations.CreateModel(
...,
),
migrations.RenameModel(
...,
),
migrations.RenameField(
...,
),
migrations.RemoveModel(
...,
),
# and so on
]
创建手动迁移文件
在终端中使用此命令:python manage.py makemigrations --empty
。
然后在里面添加你想要的。
notice: you have to compose between the "models.py" and the manual migrations.
您可以通过 运行 命令创建手动迁移:
python manage.py makemigrations --name migration_name app_name --empty
其中 app_name
对应于您的项目中您要添加迁移的应用程序。请记住 Django 同时管理项目和应用程序(项目是特定网站的配置和应用程序的集合。一个项目可以包含多个应用程序。一个应用程序可以在多个项目中。)
--empty
标志是创建一个迁移文件,您必须在其中添加手动迁移。
例如,在一个项目中,您有一个名为 api
的应用程序,它只有一个迁移文件 0001_initial.py
运行:
python manage.py makemigrations api --name migration_example --empty
将在目录 api/migrations/
下创建一个名为 0002_migration_example.py
的文件,如下所示:
# 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')
]
我发现我可以使用 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
您将如何创建 'manual' django 迁移?
您可以通过研究自动生成的迁移来了解如何进行迁移,例如:
class Migration(migrations.Migration):
dependencies = [
('app_details', '0001_initial'),
]
operations = [
migrations.AddField(
...,
),
migrations.CreateModel(
...,
),
migrations.RenameModel(
...,
),
migrations.RenameField(
...,
),
migrations.RemoveModel(
...,
),
# and so on
]
创建手动迁移文件
在终端中使用此命令:python manage.py makemigrations --empty
。
然后在里面添加你想要的。
notice: you have to compose between the "models.py" and the manual migrations.
您可以通过 运行 命令创建手动迁移:
python manage.py makemigrations --name migration_name app_name --empty
其中 app_name
对应于您的项目中您要添加迁移的应用程序。请记住 Django 同时管理项目和应用程序(项目是特定网站的配置和应用程序的集合。一个项目可以包含多个应用程序。一个应用程序可以在多个项目中。)
--empty
标志是创建一个迁移文件,您必须在其中添加手动迁移。
例如,在一个项目中,您有一个名为 api
的应用程序,它只有一个迁移文件 0001_initial.py
运行:
python manage.py makemigrations api --name migration_example --empty
将在目录 api/migrations/
下创建一个名为 0002_migration_example.py
的文件,如下所示:
# 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')
]