Django 5.2 Upgrade Plan 🚀

Overview

:tada: We’re excited to roll out Django 5.2 across the openedx project! This community effort will rely on your expertise as repository maintainers to shepherd the upgrade process. While you don’t have to personally make every change, we’re counting on you to ensure your repositories get upgraded smoothly. :flexed_biceps:

Approach

  1. :puzzle_piece: First phase: Update all openedx libraries to support Django 5.2 while maintaining 4.2 compatibility
  2. :wrench: Second phase: Upgrade Django services to run exclusively on 5.2

Key Dates :date:

  • This week: :memo: Ticket creation and documentation for using django-upgrade
  • May 14, 2025: :puzzle_piece: All openedx libraries compatible with both Django 4.2 and 5.2
  • August 4, 2025: :sparkles: All openedx services running on Django 5.2
  • September 4, 2025: :package: Tutor updates completed

Responsibilities

  • :woman_technologist: Maintainers: Update your repositories
  • :superhero: Maintainers-at-large: Handle repositories without assigned maintainers
  • :compass: Coordination: @Awais_Qureshi and I will be coordinating the overall upgrade

Questions? :speech_balloon:

:person_raising_hand: Direct questions about schedule changes, upgrade issues, or knowledge sharing to this thread. We’re here to help each other succeed! For additional support, contact @Awais_Qureshi or me. You’ve got this! :raising_hands:

5 Likes

Thank you all for your ongoing collaboration as we begin working on the Django 5.2 upgrade.

I’ve created a Django 5.2 Upgrade Plan document to guide you through the upgrade process. You can access the full document here.

We are currently adding tickets, so maintainers can start working on their respective repositories. I will share the main ticket link soon.

Feel free to ask questions or provide feedback, and let’s work together to make this upgrade process smooth for everyone!

The Parent ticket and all library tickets have been created here: Django 5.2 Upgrade · Issue #339 · openedx/public-engineering · GitHub

:police_car_light: Django 5.2 Upgrade Alert: index_together Removed!
Heads up, team!

The index_together option in Django model Meta classes has been:

:warning: Deprecated in Django 4.2

:cross_mark: Removed in Django 5.2

If this still exists in our codebase, we’ll encounter the following error during tests or migrations:

TypeError: ‘class Meta’ got invalid attribute(s): index_together

Why This Matters
This isn’t just a minor cleanup — it affects database indexes and requires new migration.

We haven’t created a PR yet, so we’ll need to do some discovery about this change.

The django-upgrade tool does not automatically detect or handle this issue, so it will require manual intervention.

If you are working on this index_together, please share the PR and your findings.

2 Likes

I’ve opened PR #339.

I’ve requested Arbi-Bom to share the row count for the relevant table, as that information will help determine the appropriate path forward for this PR.

We have identified several important issues that require attention in the Open edX platform. We are looking for maintainers to pick up these tasks and help address them: