diff --git a/core/filters.py b/core/filters.py index f0cebd1c..6681d7f5 100644 --- a/core/filters.py +++ b/core/filters.py @@ -422,9 +422,11 @@ class CategoryFilter(FilterSet): parent_order = f"-{field}" if desc else field child_order = parent_order - qs = queryset.order_by(parent_order) - children_qs = Category.objects.all().order_by(child_order) + qs = queryset.order_by(parent_order).prefetch_related(None) + children_qs = ( + Category.objects.all().order_by(child_order) if child_order != "?" else Category.objects.all().order_by("?") + ) return qs.prefetch_related(Prefetch("children", queryset=children_qs)) def filter_name(self, queryset, _name, value):