我如何挂接到 django 1.8 的 django 迁移
How can i hook into django migrations for django 1.8
我正在使用 django 1.8。
现在我需要添加一些基于权限的自定义字段,所以我从 python 模型创建了一个 YML 文件,这样
description:
permissions: ['ADMIN']
award:
permissions: ['USER']
它工作正常,但我的问题是,如果有人更改了字段名称或删除了某些字段,那么我也需要在我的 yml 文件中反映出来。
所以我在想当用户运行迁移时,如果有一些我可以看到
- 如果字段被删除,那么我需要从 yml 文件中删除该条目
- 如果字段被重新命名,那么我需要重命名它
- 如果添加了新字段,那么我需要为其添加空白行
我该怎么做
创建迁移后,您可以手动将基础迁移class更改为您的自定义子class,并覆盖apply
方法
from django.db import migrations
class MyBaseMigration(migrations.Migration):
def apply(self, project_state, schema_editor, collect_sql=False):
for operation in self.operations:
"""
Examine operation classes here and provide end-user notes
"""
return super(MyBaseMigration, self).apply(project_state, schema_editor, collect_sql=collect_sql)
我正在使用 django 1.8。
现在我需要添加一些基于权限的自定义字段,所以我从 python 模型创建了一个 YML 文件,这样
description:
permissions: ['ADMIN']
award:
permissions: ['USER']
它工作正常,但我的问题是,如果有人更改了字段名称或删除了某些字段,那么我也需要在我的 yml 文件中反映出来。
所以我在想当用户运行迁移时,如果有一些我可以看到
- 如果字段被删除,那么我需要从 yml 文件中删除该条目
- 如果字段被重新命名,那么我需要重命名它
- 如果添加了新字段,那么我需要为其添加空白行
我该怎么做
创建迁移后,您可以手动将基础迁移class更改为您的自定义子class,并覆盖apply
方法
from django.db import migrations
class MyBaseMigration(migrations.Migration):
def apply(self, project_state, schema_editor, collect_sql=False):
for operation in self.operations:
"""
Examine operation classes here and provide end-user notes
"""
return super(MyBaseMigration, self).apply(project_state, schema_editor, collect_sql=collect_sql)