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