I'm using Django 1.3's class based generic view to display a list of images, but I want to add a filter that enables the user to narrow down the displayed results.
My current approach works, but feels quite hackish:
class ImageFilterForm(ModelForm):
class Meta:
model = Image
class ImageListView(ListView):
model = Image
def get_queryset(self):
qs = Image.objects.select_related()
for item in self.request.GET:
key, value = item, self.request.GET.getlist(item)
# ... Filtering here ...
return qs
def get_context_data(self, **kwargs):
context = super(ImageListView, self).get_context_data(**kwargs)
context['filter_form'] = ImageFilterForm(self.request.GET)
return context
Are there better means to add custom filtering to a generic view?