我使用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'
答案 0 :(得分: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
答案 1 :(得分: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