The Wire · Showcase
DJANGO FIXES MODULE LOADING AND MIGRATION TRACKING IN MAJOR UTILITY OVERHAUL
By RepoJournal · Filed · About Django
Django's import_string utility now handles full module paths and submodules, closing a long-standing gap in the framework's import capabilities.
The headline fix [1] [2] upgrades import_string to load modules directly without requiring prior import state, a capability that was broken or incomplete before. This matters because developers have been working around this limitation for years. In parallel, Django's migration system gained critical functionality [3]: unmanaged models now get the same migration tracking as managed models, meaning your external database tables finally appear in your schema history. The admin interface saw test fixes [4] to properly validate SelectBox heights after Flexbox updates to the UI, ensuring selenium tests reflect actual behavior instead of brittle assumptions. On the infrastructure side [5], Django bumped its GitHub Actions dependencies to resolve Node.js 20 deprecation warnings, upgrading to upload-artifact@v7 to stay current with GitHub's runtime requirements.
Action items
- → Review import_string usage in your codebase - the signature change to cached_import may affect custom loading patterns django/django [plan]
- → Check unmanaged model migrations - they now appear in migration files and need review before next deployment django/django [plan]
- → Update any custom admin SelectBox tests to verify inner box heights, not outer container heights django/django [monitor]
References
- [1] Fixed #36864 -- Added support for module and submodule loading in import_string. ↗ django/django
- [2] Fixed #36864 -- Supported modules and submodules in import_string(). django/django
- [3] Fixed #35813 -- Made migrations track all changes to unmanaged models. ↗ django/django
- [4] Fixed #37180 -- Fixed admin SelectBox height tests to verify available/chosen box heights. ↗ django/django
- [5] Bumped versions in Github actions configuration. ↗ django/django