Django

Django: Weekly Recap - Email Infrastructure & Admin Enhancements

Django merged 16 pull requests this week, implementing a major email backend overhaul with dictionary-based MAILERS configuration and adding admin actions to change forms. The team also deprecated QuerySet.select_related() with no arguments and fixed several compatibility issues with Python 3.14 and 3.15.

Duration: PT3M17S

https://podlog.io/listen/django-b4aa223e/episode/django-weekly-recap-email-infrastructure-admin-enhancements-75a67d68

Transcript

Good morning. This is your Django Weekly Recap for May 10th through 17th, 2026.

Sixteen pull requests merged with 23 additional commits this week, delivering significant infrastructure changes and admin improvements.

The major feature this week is the implementation of dictionary-based MAILERS configuration in PR 21231. This 3,500-line change aligns Django's email backend configuration with similar capabilities in caches, databases, and storages, following DEP 0018. The update adds a MAILERS setting, updates all email backends to support the new configuration, and deprecates the existing EMAIL_BACKEND setting pattern.

Admin functionality received a substantial enhancement with PR 16012, which adds admin actions to change forms after a 14-year ticket. Users can now execute admin actions directly from object edit pages, with proper styling for save_on_top configurations.

For database operations, PR 19822 deprecates QuerySet.select_related() with no arguments due to performance concerns, affecting both the ORM and corresponding admin options. This follows Django's design philosophy of explicit configuration over implicit behavior.

Several fixes addressed compatibility issues. PR 21275 resolves test failures on Python 3.14.5+ due to upstream argument parser changes, while PR 21284 updates SMTP email backend tests for Python 3.15's improved email address handling. PR 21246 removes workarounds for minidom document checks after CVE-2025-12084 was fixed in CPython.

Infrastructure improvements include PR 21167 adding preserve_request support to RedirectView for HTTP 307 and 308 status codes, and PR 21102 fixing Oracle compound query compilation by removing unnecessary ordering.

Documentation updates clarify that model instantiation doesn't coerce field values in PR 21174, addressing a common source of confusion around equality checks and queryset membership tests.

The team also addressed testing infrastructure with PR 21279 adding environment variables for Homebrew-installed libraries on Darwin arm64, and PR 21282 pinning Selenium versions due to behavioral changes in class attribute handling.

Notable commits include the complete email infrastructure implementation and removal of hardcoded primary keys in admin permission tests for better test reliability.

Next week, expect continued work on the email system migration path and potential follow-ups to the admin actions enhancement based on community feedback.

That's your Django update. We'll be back next week with more developments from the Django team.