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:
parent
880f3f19b1
commit
99288ebbc8
1 changed files with 4 additions and 2 deletions
|
|
@ -422,9 +422,11 @@ class CategoryFilter(FilterSet):
|
||||||
parent_order = f"-{field}" if desc else field
|
parent_order = f"-{field}" if desc else field
|
||||||
child_order = parent_order
|
child_order = parent_order
|
||||||
|
|
||||||
qs = queryset.order_by(parent_order)
|
qs = queryset.order_by(parent_order).prefetch_related(None)
|
||||||
children_qs = Category.objects.all().order_by(child_order)
|
|
||||||
|
|
||||||
|
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))
|
return qs.prefetch_related(Prefetch("children", queryset=children_qs))
|
||||||
|
|
||||||
def filter_name(self, queryset, _name, value):
|
def filter_name(self, queryset, _name, value):
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue