From 0b77e733a8ba0b4c88e3a144361946d5323f1f58 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Thu, 27 Aug 2015 14:35:39 +0100 Subject: [PATCH] Don't display filter control on detail views --- rest_framework/renderers.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index d59c7e20f..efd534df3 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -601,10 +601,20 @@ class BrowsableAPIRenderer(BaseRenderer): def get_breadcrumbs(self, request): return get_breadcrumbs(request.path, request) - def get_filter_form(self, view, request): + def get_filter_form(self, data, view, request): if not hasattr(view, 'get_queryset') or not hasattr(view, 'filter_backends'): return + # Infer if this is a list view or not. + paginator = getattr(view, 'paginator', None) + if (paginator is not None and data is not None): + try: + paginator.get_results(data) + except (TypeError, KeyError): + return + elif not isinstance(data, list): + return + queryset = view.get_queryset() elements = [] for backend in view.filter_backends: @@ -667,7 +677,7 @@ class BrowsableAPIRenderer(BaseRenderer): 'delete_form': self.get_rendered_html_form(data, view, 'DELETE', request), 'options_form': self.get_rendered_html_form(data, view, 'OPTIONS', request), - 'filter_form': self.get_filter_form(view, request), + 'filter_form': self.get_filter_form(data, view, request), 'raw_data_put_form': raw_data_put_form, 'raw_data_post_form': raw_data_post_form,