From b2bddc5a7473c78b05774d99106c5926038745ea Mon Sep 17 00:00:00 2001 From: Willem Van Onsem Date: Wed, 9 Apr 2025 12:23:00 +0200 Subject: [PATCH] speed up matching of filter fields by using a set --- docs/api-guide/authentication.md | 5 +++++ rest_framework/filters.py | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/api-guide/authentication.md b/docs/api-guide/authentication.md index 84e58bf4b..c6917a7a8 100644 --- a/docs/api-guide/authentication.md +++ b/docs/api-guide/authentication.md @@ -67,6 +67,11 @@ using the `APIView` class-based views. Or, if you're using the `@api_view` decorator with function based views. + from rest_framework.authentication import SessionAuthentication, BasicAuthentication + from rest_framework.decorators import api_view, authentication_classes, permission_classes + from rest_framework.permissions import IsAuthenticated + from rest_framework.response import Response + @api_view(['GET']) @authentication_classes([SessionAuthentication, BasicAuthentication]) @permission_classes([IsAuthenticated]) diff --git a/rest_framework/filters.py b/rest_framework/filters.py index 3f4730da8..54a76ae0c 100644 --- a/rest_framework/filters.py +++ b/rest_framework/filters.py @@ -311,7 +311,7 @@ class OrderingFilter(BaseFilterBackend): return valid_fields def remove_invalid_fields(self, queryset, fields, view, request): - valid_fields = [item[0] for item in self.get_valid_fields(queryset, view, {'request': request})] + valid_fields = {item[0] for item in self.get_valid_fields(queryset, view, {'request': request})} def term_valid(term): if term.startswith("-"):