Think Build Implement Repeat
London, UK +44 7367 067226
WhatsApp FOLLOW f in X
  1. Home
  2. Blog
  3. Staying on a Supported Version
Python & Django

Staying on a Supported Version

Upgrading Django safely one major version at a time: deprecation warnings first, third-party package blockers and testing on production-like data.

Updated 2 min readBy SpiderHunts Technologies

Free estimateNo obligation

Get a free estimate

Tell us what you need. A senior engineer reads every enquiry.

Takes under a minute. We never share your details.

  • Free consultation
  • No commitment
  • NDA on request

Prefer to talk? Book a free 30-minute call →

Quick answer — TL;DR

Upgrade one major version at a time, with tests passing before and after, checking the deprecation warnings on the current version first.

Staying current is cheaper than catching up

Django has a defined release and support cycle. An application several versions behind cannot be upgraded in one step, because every third-party package has also moved.

Upgrading annually is a few days. Upgrading after four years is a project, and it is one nobody has budgeted for.

The order

  1. Get the tests passing on the current version first
  2. Fix the deprecation warnings the current version reports
  3. Upgrade one major version, not several
  4. Update third-party packages that require it
  5. Run the full test suite and check manually

Deprecation warnings on the current version are the upgrade instructions for the next one. Clearing them first makes the upgrade largely uneventful.

Third-party packages are the usual obstacle

  • Check each dependency supports the target version before starting
  • An unmaintained package that does not is a decision point
  • Replacing it may be part of the upgrade
  • Fewer dependencies means easier upgrades, which is one more argument for restraint

Test on production-like data

TestCatches
Full test suiteCode-level breakage
Migrations on a production-sized copyLong-running migrations
Manual check of key workflowsBehaviour changes tests miss
Performance comparisonRegressions
Third-party integrationsPackage incompatibilities

Plan it, do not wait for it

Put the upgrade in the plan annually, before support ends. Upgrading on a schedule is routine; upgrading because support ended is urgent and disruptive.

It is also considerably cheaper, which is the argument that usually gets it budgeted.

FAQ

Frequently asked questions

The questions readers ask us after this guide.

Still have a question?

Ask us directly — a senior engineer will get back to you.

Ask about your project

How often should we upgrade?

At least annually, staying on a supported release. Long-term support versions give more time between upgrades.

What if a package is unmaintained?

Replace it or fork it. An unmaintained dependency will eventually block an upgrade you cannot avoid.

How long does an upgrade take?

A few days if current, considerably longer if several versions behind.

Can we skip versions?

Not safely. One major version at a time, with tests passing between.

Keep reading

More on Python & Django

Python & Django

An API Other Systems Can Depend On

Designing a Python API service others can depend on: validation at the boundary, consistent errors and status codes, early versioning and documentation.

Python & Django

Moving and Transforming Data Reliably

Building data pipelines in Python that cope with malformed input: restartable stages, quarantining failures, reconciling counts and alerting on absence.

Start here

Several Django versions behind?

It gets harder every year. Happy to assess what catching up would involve.

  1. You tell us what you needTwo minutes on the form, or a message on WhatsApp.
  2. A senior engineer reviews itAnd comes back with questions, a realistic range and an honest view on fit.
  3. Free 30-minute scoping callWe talk through scope, options and a realistic estimate — with no obligation.
Free estimateNo obligation

Talk to someone who builds this

Send a short brief and we will come back with an honest view and a realistic range.

Takes under a minute. We never share your details.

  • Free consultation
  • No commitment
  • NDA on request

Prefer to talk? Book a free 30-minute call →