pivotal-energy-solutions/django-datatable-view

Using django-filters with this module

jangeador opened this issue · 1 comments

Has anyone been able to make this app work together with django-filter? I have tried but for some reason at the last minute my queryset gets overriden this is because all the parameters for the datatable get passed via the request.GET which is what django-filters use:

from datatableview import Datatable
from datatableview.views import DatatableView
from django.db import models
from django_filters import FilterSet
from django_filters.views import FilterMixin


class Student(models.Model):
    school = models.CharField(max_length=255, blank=True, null=True)
    grade = models.CharField(max_length=255, blank=True, null=True)
    last_name = models.CharField(max_length=255, blank=True, null=True)
    first_name = models.CharField(max_length=255, blank=True, null=True)
    middle_name = models.CharField(max_length=255, blank=True, null=True)


class StudentFilter(FilterSet):
    class Meta:
        model = Student
        fields = ['school', 'grade']


class StudentDataTable(Datatable):
    class Meta:
        model = Student
        structure_template = 'datatableview/bootstrap_structure.html'
        columns = ['school', 'grade', 'last_name', 'first_name']


class StudentListView(FilterMixin, DatatableView):
    model = Student
    datatable_class = StudentDataTable
    template_name = 'afb/datatable.html'
    filter = None

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

    def get_context_data(self, **kwargs):
        context = super(StudentListView, self).get_context_data(**kwargs)
        context['filter'] = self.filter
        return context
tiliv commented

No promises on timeline yet, but this is on my todo list for a new release