Simple example of how to use a class based view and django-filter?

As mentioned in the link Viewing subsets of objects

You can use something like this is your views.py

class modelListView(someGenericView):
        queryset = modelName.object.filter(myFilter)

A bit more digging and I have managed to answer it. I have used the code from here https://github.com/rasca/django-enhanced-cbv.

I added the contents of list.py into my main app as main_app/filter_mixin.py

Then in the app I was adding a search to the list view I added the file filter.py like this (identical to documentation)

from django_filters import FilterSet
from .models import Contact


class ContactFilter(FilterSet):
    class Meta:
        model = Contact
        fields = ['name_first', 'name_last']

Now the view.py becomes:

from vanilla import ListView

from .filter import ContactFilter
from galleria.filter_mixin import ListFilteredMixin


class ContactList(ListFilteredMixin, ListView):
    filter_set = ContactFilter

Here's an example with just overwriting the queryset to allow filtering and context to embed the filters in the template.

class ObjFilter(django_filters.FilterSet):
    class Meta:
        model = Obj
        fields = ["field1", "field2"]


class ObjView(ListView):
    template_name = "template.html"
    model = Obj
    paginate_by = 10
    ordering = ["-id"]

    def get_queryset(self):
        queryset = super().get_queryset()
        filter = ObjFilter(self.request.GET, queryset)
        return filter.qs

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        queryset = self.get_queryset()
        filter = ObjFilter(self.request.GET, queryset)
        context["filter"] = filter
        return context