diff --git a/docs/changelog.rst b/docs/changelog.rst index 7cc5a4327..f0d500589 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -5,8 +5,7 @@ Changelog ------------------ - Nothing changed yet. -- Remove unnecessary queries to speed up export - This is done by overriding `ChangeList` from `ModelAdmin.get_changelist().get_results()` with stub method. +- Remove unnecessary ChangeList queries to speed up export via Admin UI (#1715) 3.3.4 (2023-12-09) ------------------ diff --git a/import_export/admin.py b/import_export/admin.py index 8bb2db67e..3474c7a45 100644 --- a/import_export/admin.py +++ b/import_export/admin.py @@ -745,17 +745,17 @@ def get_export_queryset(self, request): class ExportChangeList(ChangeList): def get_results(self, request): """ - We override this method because we only call ChangeList.get_queryset() - so we don't need anything from this method. - The get_results() gets called during ChangeList.__init__() - and we do want to avoid unnecessary COUNT queries. + Overrides ChangeList.get_results() to bypass default operations like + pagination and result counting, which are not needed for export. This + prevents executing unnecessary COUNT queries during ChangeList + initialization. """ pass cl = ExportChangeList(**changelist_kwargs) # get_queryset() is already called during initialization, - # it is enough to get it's results + # it is enough to get its results if hasattr(cl, "queryset"): return cl.queryset diff --git a/tests/core/tests/test_admin_integration.py b/tests/core/tests/test_admin_integration.py index 807c8c21e..b45b42955 100644 --- a/tests/core/tests/test_admin_integration.py +++ b/tests/core/tests/test_admin_integration.py @@ -726,7 +726,7 @@ def get_queryset(self, request): self.assertEqual(queryset.count(), Book.objects.count()) def test_get_export_queryset_no_queryset_init(self): - """Test if user has own ChangeList which doesn't store queryset diring init""" + """Test if user has own ChangeList which doesn't store queryset during init""" model_admin = BookAdmin(Book, AdminSite()) factory = RequestFactory()