aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/generics.py
diff options
context:
space:
mode:
authortoran billups2013-03-07 15:09:59 -0600
committertoran billups2013-03-08 10:08:53 -0600
commit1a8f07def8094a1e34a656d83fc7bdba0efff184 (patch)
tree2b6a3cf0f336b1723d6bd74e773b6ad56dca6cf6 /rest_framework/generics.py
parent4e80541824bab0712a816716c5c63ec5623370d8 (diff)
downloaddjango-rest-framework-1a8f07def8094a1e34a656d83fc7bdba0efff184.tar.bz2
GenericAPIView now applies filter_backend for list and retrieve api views
Before this commit only the MultipleObjectAPIView would apply a filter_backend, leaving the SingleObjectAPIView to return objects you might otherwise expect to have been filtered out. It's worth mentioning that when a SingleObjectAPIView makes a request for an object that should be excluded, a 404 is the expected result.
Diffstat (limited to 'rest_framework/generics.py')
-rw-r--r--rest_framework/generics.py20
1 files changed, 10 insertions, 10 deletions
diff --git a/rest_framework/generics.py b/rest_framework/generics.py
index 9ae8cf0a..36ecf915 100644
--- a/rest_framework/generics.py
+++ b/rest_framework/generics.py
@@ -18,6 +18,16 @@ class GenericAPIView(views.APIView):
model = None
serializer_class = None
model_serializer_class = api_settings.DEFAULT_MODEL_SERIALIZER_CLASS
+ filter_backend = api_settings.FILTER_BACKEND
+
+ def filter_queryset(self, queryset):
+ """
+ Given a queryset, filter it with whichever filter backend is in use.
+ """
+ if not self.filter_backend:
+ return queryset
+ backend = self.filter_backend()
+ return backend.filter_queryset(self.request, queryset, self)
def get_serializer_context(self):
"""
@@ -81,16 +91,6 @@ class MultipleObjectAPIView(MultipleObjectMixin, GenericAPIView):
paginate_by = api_settings.PAGINATE_BY
paginate_by_param = api_settings.PAGINATE_BY_PARAM
pagination_serializer_class = api_settings.DEFAULT_PAGINATION_SERIALIZER_CLASS
- filter_backend = api_settings.FILTER_BACKEND
-
- def filter_queryset(self, queryset):
- """
- Given a queryset, filter it with whichever filter backend is in use.
- """
- if not self.filter_backend:
- return queryset
- backend = self.filter_backend()
- return backend.filter_queryset(self.request, queryset, self)
def get_pagination_serializer(self, page=None):
"""