Создать фильтр в 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