The upgrade can be difficult, depends on your situation.
First, check the changelog for every version. The goal here is to understand if there is a major change that can affect your code. For example, the on_delete
parameter in the foreign field models was optional, now is mandatory.
If you spot something, just update your code.
What can really make the differences are the presence of tests. When we move from python2 to python3 and django 1.7 to 1.11 the tests were our insurance.
We just start to upgrade our code to a different branch using the virtualenv with the new python and new django and just fixing, testing and then merging in develop. If you don't have tests maybe is the right time to write some of them.
I would not suggest you jump directly to django 2.0. Again, if you have tests you can update gradually and then check the deprecation warnings
. Those are very helpful to prepare your code for the next version.
Update
During the process, we check our requirements and revise every package we had in our system to verify the compatibility. We clean up a little bit removing some packages and update some others. Again, if you have tests you have your insurance :-)
Conclusion
- Check the changelogs
- Use a separate branch
Then:
- Update gradually ( e.g. from 1.7 to 1.8)
- (write and) Run tests
- Update your code/packages
- Run tests
- If all it's ok then merge back
in develop
- branch again and go back to 1