[英]create a filter in django-datatables-view
I use django-datatables-view to render a huge dataset.我使用 django-datatables-view 来渲染一个巨大的数据集。 I try to filter
'flat_price'
.我尝试过滤
'flat_price'
。 It should be less or equal than a number that user writes in an input field它应该小于或等于用户在输入字段中写入的数字
That's my DataTablesView:那是我的 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)
I can't understand how filter_queryset works.我不明白 filter_queryset 是如何工作的。 When I try to load page with the datatable I've encountered with
AttributeError
: 'NoneType object has no attribute count'
当我尝试使用数据表加载页面时,我遇到了
AttributeError
: 'NoneType object has no attribute count'
filter_queryset
should return queryset
. filter_queryset
应该返回queryset
。
In your code, filter_queryset(self, qs)
does not return any data.在您的代码中,
filter_queryset(self, qs)
不返回任何数据。 so, OrderListJson.get()
use NoneType
as a queryset所以,
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
You should return the filtered query您应该返回过滤后的查询
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
replace field1 and field2 with your modal's fields that you want them to be searchable.将 field1 和 field2 替换为您希望它们可搜索的模态字段。 ** Q is imported from **
** Q 是从 ** 导入的
from django.db.models import Q
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.