0

我使用 django-datatables-view 来渲染一个巨大的数据集。我尝试过滤'flat_price'。它应该小于或等于用户在输入字段中写入的数字

那是我的数据表视图:

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'

4

2 回答 2

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
于 2016-04-27T14:30:09.350 回答
1

您应该返回过滤后的查询

    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
于 2021-02-16T14:22:00.760 回答