Создать фильтр в django-datatables-view

Я использую django-datatables-view для рендеринга огромного набора данных. Я пытаюсь отфильтровать 'flat_price', Оно должно быть меньше или равно числу, которое пользователь записывает в поле ввода

Это мой 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)

Я не могу понять, как работает filter_queryset. Когда я пытаюсь загрузить страницу с таблицей данных, с которой я столкнулся AttributeError: 'NoneType object has no attribute count'

2 ответа

Решение

filter_queryset должен вернуться queryset,

В вашем коде filter_queryset(self, qs) не возвращает никаких данных. так, OrderListJson.get() использование NoneType как набор запросов

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

Вы должны вернуть отфильтрованный запрос

          def filter_queryset(self, qs):
        search = self.request.GET.get(u'search[value]', None)
        print(search)
        if search:
            qs = qs.filter(
                Q(field1__icontains=search) |
                Q(field2__icontains=search)
            )
        return qs

замените field1 и field2 на поля вашего модального окна, которые вы хотите, чтобы они были доступны для поиска. ** Q импортируется из **

      from django.db.models import Q
Другие вопросы по тегам