aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/generics.py
diff options
context:
space:
mode:
Diffstat (limited to 'rest_framework/generics.py')
-rw-r--r--rest_framework/generics.py21
1 files changed, 14 insertions, 7 deletions
diff --git a/rest_framework/generics.py b/rest_framework/generics.py
index ea62123d..ae03060b 100644
--- a/rest_framework/generics.py
+++ b/rest_framework/generics.py
@@ -21,19 +21,21 @@ class GenericAPIView(views.APIView):
queryset = None
serializer_class = None
+ # Shortcut which may be used in place of `queryset`/`serializer_class`
+ model = None
+
filter_backend = api_settings.FILTER_BACKEND
paginate_by = api_settings.PAGINATE_BY
paginate_by_param = api_settings.PAGINATE_BY_PARAM
pagination_serializer_class = api_settings.DEFAULT_PAGINATION_SERIALIZER_CLASS
+ model_serializer_class = api_settings.DEFAULT_MODEL_SERIALIZER_CLASS
page_kwarg = 'page'
- lookup_kwarg = 'pk'
+ lookup_field = 'pk'
allow_empty = True
######################################
- # These are all pending deprecation...
+ # These are pending deprecation...
- model = None
- model_serializer_class = api_settings.DEFAULT_MODEL_SERIALIZER_CLASS
pk_url_kwarg = 'pk'
slug_url_kwarg = 'slug'
slug_field = 'slug'
@@ -116,6 +118,11 @@ class GenericAPIView(views.APIView):
def filter_queryset(self, queryset):
"""
Given a queryset, filter it with whichever filter backend is in use.
+
+ You are unlikely to want to override this method, although you may need
+ to call it either from a list view, or from a custom `get_object`
+ method if you want to apply the configured filtering backend to the
+ default queryset.
"""
if not self.filter_backend:
return queryset
@@ -164,7 +171,7 @@ class GenericAPIView(views.APIView):
# TODO: Deprecation warning
return self.model._default_manager.all()
- raise ImproperlyConfigured("'%s' must define 'queryset'"
+ raise ImproperlyConfigured("'%s' must define 'queryset' or 'model'"
% self.__class__.__name__)
def get_object(self, queryset=None):
@@ -184,10 +191,10 @@ class GenericAPIView(views.APIView):
# Perform the lookup filtering.
pk = self.kwargs.get(self.pk_url_kwarg, None)
slug = self.kwargs.get(self.slug_url_kwarg, None)
- lookup = self.kwargs.get(self.lookup_kwarg, None)
+ lookup = self.kwargs.get(self.lookup_field, None)
if lookup is not None:
- filter_kwargs = {self.lookup_kwarg: lookup}
+ filter_kwargs = {self.lookup_field: lookup}
elif pk is not None:
# TODO: Deprecation warning
filter_kwargs = {'pk': pk}