在 django-datatables-view 中创建一个过滤器

create a filter in 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'

filter_queryset 应该 return queryset.

在您的代码中,filter_queryset(self, qs) 没有 return 任何数据。 所以,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

您应该return过滤查询

    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