我发现我可以在 django 项目中使用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
Run Code Online (Sandbox Code Playgroud)
您将如何创建“手动”django 迁移?
小智 50
您可以通过运行以下命令来创建手动迁移:
python manage.py makemigrations --name migration_name app_name --empty
Run Code Online (Sandbox Code Playgroud)
凡app_name
符合您的项目中的应用程序,你要添加的迁移。记住 Django 管理项目和应用程序(一个项目是一个特定网站的配置和应用程序的集合。一个项目可以包含多个应用程序。一个应用程序可以在多个项目中。)并且--empty
标志是创建一个迁移文件,您将在其中拥有添加您的手动迁移。
例如,在一个名为应用程序的项目中,该应用程序api
只0001_initial.py
运行一个迁移文件:
python manage.py makemigrations api --name migration_example --empty
Run Code Online (Sandbox Code Playgroud)
将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 = [
]
Run Code Online (Sandbox Code Playgroud)
您应该migrations.RunSQL('some sql').
在操作括号内添加,例如:
operations = [
migrations.RunSQL('some sql')
]
Run Code Online (Sandbox Code Playgroud)
您可以通过调查自动生成的迁移来了解如何进行迁移,例如:
class Migration(migrations.Migration):
dependencies = [
('app_details', '0001_initial'),
]
operations = [
migrations.AddField(
...,
),
migrations.CreateModel(
...,
),
migrations.RenameModel(
...,
),
migrations.RenameField(
...,
),
migrations.RemoveModel(
...,
),
# and so on
]
Run Code Online (Sandbox Code Playgroud)
在终端中使用此命令:python manage.py makemigrations --empty
. 然后在里面添加你想要的东西。
注意:您必须在“models.py”和手动迁移之间进行组合。
归档时间: |
|
查看次数: |
17729 次 |
最近记录: |