自带db迁移功能在1.7版本之后,之前是利用第三方工具South.
主要用到三个命令:
- migrate: 具体实施db migration, 同时回退和显示状态。
- makemigrations: 根据你现有的db model与之前的比较,生成新的migration.
- sqlmigrate: 显示migration的sql语句.
操作步骤
- python manager.py makemigrations [--name changed_model ]
- python manager.py migrate
依赖关系
migrations是针对每个APP实例的,太复杂的关系可能会导致失败,特别是针对APP1和APP2这种依赖关系时,不可靠,需要人工写依赖。
Migrations文件
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [("migrations", "0001_initial")]
operations = [
migrations.DeleteModel("Tribble"),
migrations.AddField("Author", "rating", models.IntegerField(default=0)),
]
主要是两部分组成:
- dependencies: 一系列所依赖的migrations
- operations: 具体操作的migrations动作,具体用法见migrations模块.
为APP添加migrations
如果APP已经有了model,并且已经创建了表,但是还没有migrations, 你就需要将他转化成可以使用migrations.
$ python manage.py makemigrations your_app_label
$ python manage.py migrate --fake-initial
按照上述方法,就可以在后续的migrations提供支持了。