From 99288ebbc8666cee98b269d52cbf61a61815a92f Mon Sep 17 00:00:00 2001 From: Egor fureunoir Gorbunov Date: Sat, 6 Sep 2025 03:09:38 +0300 Subject: [PATCH] Features: 1) Add conditional ordering for `children_qs` to handle random child order; 2) Enable prefetch optimization by adding `prefetch_related(None)`. Fixes: None; Extra: Minor refactor in `children_qs` assignment for clarity. --- core/filters.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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):