use django filters + search filter; still need adapts sub-page list views

This commit is contained in:
bkfox
2022-02-22 15:29:57 +01:00
parent e9e09104ad
commit 849a14014c
7 changed files with 145 additions and 73 deletions

View File

@ -80,3 +80,31 @@ class AttachedToMixin:
.published().first()
return super().get_page()
class FiltersMixin:
""" Mixin integrating Django filters' filter set """
filterset = None
filterset_class = None
def get_filterset(self, data, query):
return self.filterset_class(data, query)
def get_queryset(self):
query = super().get_queryset()
if self.filterset_class:
self.filterset = self.get_filterset(self.request.GET.copy(), query)
return self.filterset.qs
return query
def get_context_data(self, **kwargs):
filterset = kwargs.setdefault('filterset', self.filterset)
if filterset.is_valid():
kwargs['filterset_data'] = filterset.form.cleaned_data
else:
kwargs['filterset_data'] = {}
params = self.request.GET.copy()
kwargs['get_params'] = params.pop('page', True) and params
return super().get_context_data(**kwargs)