Django中makemigrations和migrate
一、django迁移命令的大致解析
1、python manage.py makemigrations命令的功能
对于首次执行这个命令时,会在原有的migrations目录下生成0001_inital.py文件;
当有了0001_inital.py文件,再执行该命令生成的迁移文件是:000x_模型类_字段.py。
在执行该命令时具体有哪些操作
1.1、将模型类的操作写到迁移文件中,是以orm的命令格式。
1.2、此时只是将模型类转换成orm的迁移命令,写到迁移文件中。没有去操作django_migrations表,也没有去执行迁移命令在物理数据库中创建表等操作。
2、python manage.py migrate命令的功能
2.1、在执行该命令后,会对比迁移文件名和django_migrations表中的记录。
如果该迁移文件在记录中已经存在了,就不会去执行该迁移文件,也就不会去操作物理数据库了。如果该迁移文件在表中没有记录,就会去执行迁移文件,去操作物理数据库,该建表就建表,修改字段就修改字段等等。还会将该迁移文件,记录到django_migrations表中,表明该迁移文件已经执行过了。
3、扩展
其实在执行python manage.py migrate时,还会操作:django_content_type和auth_permission两张表。
django_content_type:记录的是表和应用的关系,就是某个应用下有几个模型类。
auth_permission: 说是记录权限。
转载自:https://blog.csdn.net/weixin_46371752/article/details/127553559