diff options
Diffstat (limited to 'rest_framework/generics.py')
| -rw-r--r-- | rest_framework/generics.py | 21 |
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} |
