Django - Migrations

自带db迁移功能在1.7版本之后,之前是利用第三方工具South.
主要用到三个命令:

  1. migrate: 具体实施db migration, 同时回退和显示状态。
  2. makemigrations: 根据你现有的db model与之前的比较,生成新的migration.
  3. sqlmigrate: 显示migration的sql语句.

操作步骤

  1. python manager.py makemigrations [--name changed_model ]
  2. 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提供支持了。

你可能感兴趣的:(Django - Migrations)