From 76f00054d4413fb851cfd612938bcc4e8245b692 Mon Sep 17 00:00:00 2001 From: Carlton Gibson Date: Sun, 20 Jan 2019 13:11:43 +0100 Subject: [PATCH] Corrected FilterView behaviour with unbound FilterSet. (#1025) Closes #930, #987, #1007. --- django_filters/views.py | 2 +- tests/templates/tests/book_filter.html | 2 +- tests/test_views.py | 13 +++++++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/django_filters/views.py b/django_filters/views.py index a4ba68a7e..81d77db1b 100644 --- a/django_filters/views.py +++ b/django_filters/views.py @@ -77,7 +77,7 @@ def get(self, request, *args, **kwargs): filterset_class = self.get_filterset_class() self.filterset = self.get_filterset(filterset_class) - if self.filterset.is_valid() or not self.get_strict(): + if not self.filterset.is_bound or self.filterset.is_valid() or not self.get_strict(): self.object_list = self.filterset.qs else: self.object_list = self.filterset.queryset.none() diff --git a/tests/templates/tests/book_filter.html b/tests/templates/tests/book_filter.html index 474ffebd8..b593ecd51 100644 --- a/tests/templates/tests/book_filter.html +++ b/tests/templates/tests/book_filter.html @@ -1,5 +1,5 @@ {{ filter.form }} -{% for obj in filter.qs %} +{% for obj in object_list %} {{ obj }} {% endfor %} diff --git a/tests/test_views.py b/tests/test_views.py index 1f9a56449..ed1009e6f 100644 --- a/tests/test_views.py +++ b/tests/test_views.py @@ -123,6 +123,19 @@ class View(FilterView): self.assertEqual(message, expected) self.assertEqual(len(recorded), 0) + def test_view_with_unbound_filter_form_returns_initial_queryset(self): + factory = RequestFactory() + request = factory.get(self.base_url) + + queryset = Book.objects.filter(title='Snowcrash') + view = FilterView.as_view(model=Book, queryset=queryset) + + response = view(request) + titles = [o.title for o in response.context_data['object_list']] + + self.assertEqual(response.status_code, 200) + self.assertEqual(titles, ['Snowcrash']) + class GenericFunctionalViewTests(GenericViewTestCase): base_url = '/books-legacy/'