在Django进行数据迁移时,不免会误将models文件中的字段名敲错,结果致使数据迁移后没法正常使用,在解决这个问题时,整理了数据迁移的逻辑以下:python
角色:models.py、initial.py、database3d
命令:python manage.py makemigrationsblog
python manage.py migrate同步
流程:经过编写models.py,执行python manage.py makemigrations命令,生成initial.py文件(0001_initial.py),执行python manage.py migrate命令,将数据迁移至database中。it
问题:当数据迁移完成后,若是对models.py的表名进行了修改,那么就须要再次进行数据迁移,再次执行python manage.py makemigrations命令,会提示是否要重命名,点击Y确认。io
确认后,Django会自动生成一个逻辑文件(0002_auto_date_num.py),这个文件阐明了所要修改的内容。table
再执行python manage.py migrate命令,数据即迁移到database中,完成。date
此时,0001_initial.py中并未记录修改后的内容,因此Django自动生成的这个逻辑文件就是辅助initial.py的,一旦将其删除,若是再次要对models.py进行相似表名的修改操做时,执行以上步骤时(执行到python manage.py migrate),就会出现“no such table:xxx_xxx_xxx”这样的报错。model
若是将这个逻辑文件删除了,那么就须要在initial.py文件中找到修改前的那个表名,将其修改为与database中对应的table名一致,而后再进行python manage.py migrate命令便可。im
总结就是,models.py文件与initial.py文件是相关联的,而initial.py和database是相关联的,想把数据同步过去,就须要initial文件左右逢源。