模型迁移命令
models.py中模型变动后需要在终端中运行以下命令:
# 迁移计划
python manage.py makemigrations
# 数据迁移命令
python manage.py migrate
# 如果使用以上命令时报语法错误,可以尝试将命令更改为
python3 manage.py migrate
models迁移计划目录
如图所示,迁移计划存放在项目-> 项目App -> migrations目录下,查看该目录的文件可以了解每次迁移执行的内容
如下图所示,我们可以根据里边的文件判断出每次迁移计划是创建表还是更改字段等操作
models 迁移计划执行历史记录表
所有已经执行过python manage.py migrate
命令的迁移计划,都在数据库中的django_migrations中有记录
我们需要查看的是字段app为项目App的行,name字段名称与migrations目录的文件名一一对应
如果migrations目录的文件名出现在表中,说明该计划已经被执行;
此时执行python manage.py migrate
命令将只会执行在该表中没有记录的migrations目录下的文件
了解迁移计划目录中文件的内容和django_migrations表有助于我们解决一些在迁移中出的一些常见问题;
迁移时提示你xxx表已经存在,我们可以在migrations目录中找到创建该表的文件,并将该文件的记录到django_migrations表中,再进行迁移时就不会再进行创建该表了
如果想要重新创建某张表,可以将数据库中该表删除,将migrations与django_migrations表中的对应文件内容与记录删除,重新执行文章开头的两行命令即可
如果修改models字段后,迁移时提示该字段必须不为空,并且没有默认值,无法进行迁移;
此时我们可以给该字段加上default或者null=True