From a95e3f2a64a2e10be68f9b8c00ab2ee23481b153 Mon Sep 17 00:00:00 2001 From: Sean Morley Date: Thu, 11 Jul 2024 20:25:56 -0400 Subject: [PATCH] sorting server side --- backend/server/adventures/views.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/backend/server/adventures/views.py b/backend/server/adventures/views.py index 44c8403..c2c166d 100644 --- a/backend/server/adventures/views.py +++ b/backend/server/adventures/views.py @@ -1,5 +1,6 @@ from rest_framework.decorators import action from rest_framework import viewsets +from django.db.models.functions import Lower from rest_framework.response import Response from .models import Adventure, Trip from worldtravel.models import VisitedRegion, Region, Country @@ -26,10 +27,13 @@ class AdventureViewSet(viewsets.ModelViewSet): pagination_class = StandardResultsSetPagination def get_queryset(self): - return Adventure.objects.filter( + lower_name = Lower('name') + queryset = Adventure.objects.annotate( + ).filter( Q(is_public=True) | Q(user_id=self.request.user.id) - ) - + ).order_by(lower_name) # Sort by the annotated lowercase name + return queryset + def perform_create(self, serializer): serializer.save(user_id=self.request.user) @@ -52,7 +56,10 @@ class AdventureViewSet(viewsets.ModelViewSet): queryset |= Adventure.objects.filter( type='featured', is_public=True, trip=None) - return self.paginate_and_respond(queryset, request) + lower_name = Lower('name') + queryset = queryset.order_by(lower_name) + adventures = self.paginate_and_respond(queryset, request) + return adventures def paginate_and_respond(self, queryset, request): paginator = self.pagination_class()