1.起因
今天因为需要为一个Django中已经存在的model类添加元数据,所以直接在db.sqlite3中删除了该model类的映射表,但是在重新迁移的时候出现了问题:迁移后没有删除的表
(后文有Django中删除和重建数据库中关于models类的映射数据库表的正确方法)
2.解决方式
查看了网上其他博客后:大多建议删除 django_migrations表并删除migration目录下的0001_initial.py(并不能解决问题):
因为重新迁移时,并不能成功的映射新的数据库表:
这里只有删除main下,除了sqlite_master和sqlite_sequence表,的其他表然后重新执行
python manage.py makemigrations
python manage.py migrate
才能迁移成功。
3.正确迁移
Django中删除和重建数据库中关于models类的映射数据库表的正确方法:
在Django中删除models类的映射数据库表需要在models.py中剪切或删除对应的models类:然后在控制台中执行:
python manage.py makemigrations(Django会重新对照你的models类与数据库中的映射表,如果你的model类被删除,则Django会生成一个删除迁移)
python manage.py migrate(执行删除迁移,删除数据库中对应的model映射表)