pythondjangodatatabledatatablesdjango-datatable

create a filter in django-datatables-view


I use django-datatables-view to render a huge dataset. I try to filter 'flat_price'. It should be less or equal than a number that user writes in an input field

That's my DataTablesView:

class OrderListJson(BaseDatatableView):
    model = Flat
    columns = ['flat_house.adress', 'flat_price',]
    order_columns = ['flat_house.adress', 'flat_price',]
    max_display_length = 100

    def filter_queryset(self, qs):
        search = self.request.GET.get(u'search[value]', None)
        if search:
            qs = qs.filter(flat_price__lte=search)

I can't understand how filter_queryset works. When I try to load page with the datatable I've encountered with AttributeError : 'NoneType object has no attribute count'


Solution

  • filter_queryset should return queryset.

    In your code, filter_queryset(self, qs) does not return any data. so, OrderListJson.get() use NoneType as a queryset

    def filter_queryset(self, qs):
        search = self.request.GET.get(u'search[value]', None)
        if search:
            qs = qs.filter(flat_price__lte=search)
        return qs