2

我正在尝试在我的中添加过滤器功能,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})

但什么也没发生,它只显示包含所有数据的表格。

4

4 回答 4

3

我检查了 的__iter__方法,FilterSet它基本上可以访问property qs. 所以@huiming 的回答对我有用。我对您的代码进行了如下调整:

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})

我在用着:

django-filter==0.7
django-tables2==0.14.0
Django==1.6
于 2013-11-08T23:10:50.590 回答
1

经过数小时的尝试,我得到了简单的解决方案。在视图中添加这些行:

if request.method == "GET"
    list1=list()
    for obj in f:
        list1.append(obj)
    table=FitsroyFallsTable(list1)

就是这样!

于 2013-09-25T12:09:32.590 回答
1

表 = FitsroyFallsTable(f.qs)

于 2013-10-07T21:51:01.450 回答
-1

对于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
于 2014-08-28T02:12:09.573 回答