将更改应用于数据库(迁移)

创建新模型或修改现有模型后,你需要为更改生成迁移,然后将迁移应用于指定的数据库。这可以通过使用 Django 的内置迁移系统来完成。在项目根目录中使用 manage.py 实用程序:

python manage.py makemigrations <appname>

上面的命令将创建应用程序的 migrations 子目录下所必需的迁移脚本。如果省略 <appname> 参数,将处理 settings.pyINSTALLED_APPS 参数中定义的所有应用程序。如果你认为有必要,可以编辑迁移。

你可以在不使用 –dry-run 选项实际创建迁移的情况下检查所需的迁移,例如:

python manage.py makemigrations --dry-run

要应用迁移:

python manage.py migrate <appname>

上面的命令将执行第一步中生成的迁移脚本并物理更新数据库。

如果更改现有数据库的模型,则需要使用以下命令进行必要的更改。

python manage.py migrate --run-syncdb

Django 默认会创建名为 <appname>_<classname> 的表。有时你不想使用它。如果要更改默认名称,可以通过在 Meta 类中设置 db_table 来声明表名:

from django.db import models

class YourModel(models.Model):
    parms = models.CharField()
    class Meta:
        db_table = "custom_table_name"

如果要查看某个迁移将执行的 SQL 代码,请运行以下命令:

python manage.py sqlmigrate <app_label> <migration_number>

Django> 1.10
当检测到没有迁移的模型更改时,新的 makemigrations --check 选项使命令以非零状态退出。

有关迁移的更多详细信息,请参阅迁移。