def get_queryset(self) -> Optional[QuerySet]: if not self.q: return None queryset = Game.objects.filter( name_for_search__contains=Game.clean_name_for_search(self.q)) queryset = queryset.order_by(Length("name"), Lower("name")) return queryset
def get_queryset(self) -> Optional[QuerySet]: # if in the future used from other places, remove the username present requirement username = self.forwarded.get("username") if not self.q or not username: return None # Not a Game, but not worth duplicating or abstracting logic just for this cleaning query = Game.clean_name_for_search(self.q) queryset = Platform.objects.filter( shortname__contains=query) | Platform.objects.filter( name__contains=query) # comes from PlatformFilterform filter_type = self.forwarded.get("filter_type", "") if filter_type == constants.PLATFORM_FILTER_WISHLISTED: queryset = queryset.filter( id__in=WishlistedUserGame.objects.filter( user__username=username).values_list("platform__id", flat=True).distinct()) elif filter_type == constants.PLATFORM_FILTER_FINISHED: queryset = queryset.filter(id__in=UserGame.objects.filter( user__username=username, year_finished__isnull=False ).values_list("platform__id", flat=True).distinct()) elif filter_type == constants.PLATFORM_FILTER_PENDING: queryset = queryset.filter(id__in=UserGame.objects.filter( user__username=username).exclude( year_finished__isnull=False).exclude( abandoned=True).values_list("platform__id", flat=True).distinct()) elif filter_type == constants.PLATFORM_FILTER_ABANDONED: queryset = queryset.filter(id__in=UserGame.objects.filter( user__username=username, abandoned=True).values_list( "platform__id", flat=True).distinct()) elif filter_type == constants.PLATFORM_FILTER_CURRENTLY_PLAYING: queryset = queryset.filter(id__in=UserGame.objects.filter( user__username=username, currently_playing=True).values_list( "platform__id", flat=True).distinct()) queryset = queryset.only("id", "shortname").order_by(Length("shortname"), Lower("shortname")) return queryset