python django 中models模型数据迁移的简单使用

模型迁移命令

models.py中模型变动后需要在终端中运行以下命令:

# 迁移计划
python manage.py makemigrations
# 数据迁移命令
python manage.py migrate
# 如果使用以上命令时报语法错误,可以尝试将命令更改为
python3 manage.py migrate

models迁移计划目录

如图所示,迁移计划存放在项目-> 项目App -> migrations目录下,查看该目录的文件可以了解每次迁移执行的内容

python django 中models模型数据迁移的简单使用_第1张图片
图片.png

如下图所示,我们可以根据里边的文件判断出每次迁移计划是创建表还是更改字段等操作

python django 中models模型数据迁移的简单使用_第2张图片
图片.png

models 迁移计划执行历史记录表

所有已经执行过python manage.py migrate命令的迁移计划,都在数据库中的django_migrations中有记录

python django 中models模型数据迁移的简单使用_第3张图片
图片.png

我们需要查看的是字段app为项目App的行,name字段名称与migrations目录的文件名一一对应

如果migrations目录的文件名出现在表中,说明该计划已经被执行;

此时执行python manage.py migrate命令将只会执行在该表中没有记录的migrations目录下的文件

了解迁移计划目录中文件的内容和django_migrations表有助于我们解决一些在迁移中出的一些常见问题;

迁移时提示你xxx表已经存在,我们可以在migrations目录中找到创建该表的文件,并将该文件的记录到django_migrations表中,再进行迁移时就不会再进行创建该表了

如果想要重新创建某张表,可以将数据库中该表删除,将migrations与django_migrations表中的对应文件内容与记录删除,重新执行文章开头的两行命令即可

如果修改models字段后,迁移时提示该字段必须不为空,并且没有默认值,无法进行迁移;

此时我们可以给该字段加上default或者null=True

你可能感兴趣的:(python django 中models模型数据迁移的简单使用)