[Django]-Which version of Django should I be using?

1👍

Speaking as someone who just upgraded an app from that Django version, here are my experiences:

The good

  • Upgrading to an LTS release is going to help you a lot going forward.
    • Security fixes – you don’t want to run a production app on software that does not get patched
    • There will be a proven migration path to the next LTS release (I hope…)
    • You will have a long period during which you can upgrade the next time (since there will be a long overlap between two LTS versions)
  • You may actually need the new features if you will do new development.
  • It is (IMHO) not good lagging to much behind on a critical component. The day you absolutely have to migrate, there may not be a clear migration path and a lot of headache awaits.

The bad

  • A lot of things have changed, most notably South being replaced with Django migrations. You will have to retest the whole app thoroughly. Some third party dependencies may not work or may require upgrades, breaking your app.
  • You will lose all previous South migrations.

The ugly

  • There are a few gotchas with going directly from 1.6 to 1.8 due to issues with South->Django migrations. At the very least, you should try out the migration steps a couple of times on a copy of the production database.

4👍

You should upgrade. Django 1.6.X has been end of life for several months, and no longer receives security updates.

At the time of writing, the supported versions are 1.4.X LTS, 1.7.X and 1.8.X LTS. If you do not want to upgrade often, then upgrade to 1.8.X, as it is a long term support release and will be supported until April 2018 according to the roadmap.

You should always upgrade to the latest point release e.g. 1.8.4 to 1.8.5, to make sure you have the latest bug and security fixes. These point releases are backwards compatible wherever possible. By running 1.6.8, you are missing bugfixes and security fixes in 1.6.9 – 1.6.11. However, there will not be a 1.6.12 release, even though Django has had other security releases since 1.6.11, because 1.6 is now end of life.

1👍

If you don’t want to make any changes to the code, only upgrade to django 1.6.X versions (for security reasons). I just looked in the page and the last version in 1.6 is 1.6.11, but this version is deprecated and shall not receive any updates in the future.

If you and your team are using something like virtualenv or vagrant and have a lot of tests, you could make the experiment, but since 1.6 a lot of things are changed.

Leave a comment