我正在尝试在django-tables 2
中添加过滤功能,因此我选择django-filter
。我按照它工作得很好的文档,但我不知道如何将它与django-tables 2
集成。
我做了一个过滤器类,在视图中我做了这样的事情:
queryset = Fitzroyfalls.objects.select_related().all()
f = FitzroyfallsFilter(request.GET, queryset=queryset)
table = FitsroyFallsTable(f.queryset)
table.paginate(page=request.GET.get('page', 1), per_page=25)
RequestConfig(request).configure(table)
return render(request, 'query.html', {'table': table})
但没有任何反应,它只显示包含所有数据的表格。
答案 0 :(得分:3)
我检查了__iter__
的{{1}}方法,它基本上访问了FilterSet
property
。所以@ huiming的答案对我有用。我按如下方式调整了您的代码:
qs
我正在使用:
queryset = Fitzroyfalls.objects.select_related().all()
f = FitzroyfallsFilter(request.GET, queryset=queryset)
table = FitsroyFallsTable(f.qs)
RequestConfig(request, paginate={"per_page": 25, "page": 1}).configure(table)
return render(request, 'query.html', {'table': table, 'filter': f})
答案 1 :(得分:1)
经过几个小时的尝试,我得到了简单的解决方案。 在视图中添加以下行:
if request.method == "GET"
list1=list()
for obj in f:
list1.append(obj)
table=FitsroyFallsTable(list1)
aaand就是这样!
答案 2 :(得分:0)
table = FitsroyFallsTable(f.qs)
答案 3 :(得分:0)
CBV :
class FilteredSingleTableView(FilterView, SingleTableView):
def get_table_data(self):
data = super(FilteredSingleTableView, self).get_table_data()
return data if self.object_list is None else self.object_list
用法:
class UserList(FilteredSingleTableView):
template_name = 'accounts/users_list.html'
model = User
table_class = UserTable
paginate_by = 10
filterset_class = UserFilter