之前在项目中将Django从1.7升级到1.8,现在想起来记录一下相关的步骤和过程。
由于项目一开始用的是1.6,所以用python manage.py startapp
默认没有migrations这个package,而之前又有一些model是使用syncdb的,并且之后再没修改过,所以在用1.7的时候一直都没什么问题,而且1.7会自动去侦测没有makemigrations的model并自动migrate,导致了在升级1.8的过程中出现了一些小插曲,这里来记录一下。
1.7和1.8在migrate时的顺序不同(具体可以看一下源代码),所以导致了1.7能正常migrate,但是在1.8的时候会报错ColoumDoesNotExist,解决方案是看看报错信息中到底说的是哪个表没有渲染成功。我们只要先给这个app makemigrations就可以了,如果还出错的话就追根溯源到第一个报错的表,然后按顺序一个一个去makemigrations即可。
解决了migrations的差异之后,1.7和1.8基本是完全兼容的,别的都不需要进行修改。不过升级到1.8之后就算在debug模式下127.0.0.1
默认也不在settings
中的ALLOWED_HOSTS
中了,所以需要添加进去才能在本地访问。
还有就是1.8用了新的TEMPLATES的设置方法,具体的看看文档稍微修改下就好了,非常简单问题不大。
附上1.8要回退1.7的脚本(经测试有效):
1 | python manage.py migrate auth 0001 |