From 5b809122b5a543923c668061d4da75828905ba52 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Wed, 4 Mar 2026 00:33:13 -0800 Subject: [PATCH] Fix: apply ordering after annotating tag document count (#12238) --- src/documents/tests/test_tag_hierarchy.py | 10 ++++++++++ src/documents/views.py | 8 ++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/documents/tests/test_tag_hierarchy.py b/src/documents/tests/test_tag_hierarchy.py index e748225cd6..d423b1cc86 100644 --- a/src/documents/tests/test_tag_hierarchy.py +++ b/src/documents/tests/test_tag_hierarchy.py @@ -147,6 +147,16 @@ class TestTagHierarchy(APITestCase): assert serializer.data # triggers serialization assert "document_count_filter" in context + def test_tag_list_can_order_by_document_count_with_children(self) -> None: + self.document.tags.add(self.child) + + response = self.client.get( + "/api/tags/", + {"ordering": "document_count"}, + ) + + assert response.status_code == 200 + def test_cannot_set_parent_to_self(self): tag = Tag.objects.create(name="Selfie") resp = self.client.patch( diff --git a/src/documents/views.py b/src/documents/views.py index 52687d1355..842ebeab88 100644 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -487,13 +487,13 @@ class TagViewSet(PermissionsAwareDocumentCountMixin, ModelViewSet): user = getattr(getattr(self, "request", None), "user", None) children_source = list( annotate_document_count_for_related_queryset( - Tag.objects.filter(pk__in=descendant_pks | {t.pk for t in all_tags}) - .select_related("owner") - .order_by(*ordering), + Tag.objects.filter( + pk__in=descendant_pks | {t.pk for t in all_tags}, + ).select_related("owner"), through_model=self.document_count_through, related_object_field=self.document_count_source_field, user=user, - ), + ).order_by(*ordering), ) else: children_source = all_tags