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.
This commit is contained in:
Egor Pavlovich Gorbunov 2025-09-06 03:09:38 +03:00
parent 880f3f19b1
commit 99288ebbc8

View file

@ -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):