在 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
我使用 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