使用django-filter记住django-tables2中的URL参数

时间:2018-01-12 11:53:15

标签: python django django-filter django-tables2

这是我的观点:

class FilteredReclamationListView(FilterView, SingleTableView):
    table_class = ReclamationTable
    model = ReclamationMainModel
    template_name = 'reclamation_table/index.html'
    filterset_class = ReclamationFilter
    table_pagination = {
    'per_page': 50
    }
    def get_table_data(self):
        return self.object_list
    def get_queryset(self):
        return self.model.objects.filter(archive=False).order_by('-id')

在这种情况下是否可以记住URL参数?怎么样?

我希望有一个用户进入另一个视图的情况,当他回来时,他会看到他的最后一个查询/过滤器。我阅读了有关会话和request.GET.urlencode()的内容,但我无法在我看来应用这些内容。

2 个答案:

答案 0 :(得分:1)

Aule,您可以将过滤器存储在会话中。

request.session['filter'] = myFilter

答案 1 :(得分:1)

我找到了解决问题的解决方案。我的第一个观点如下:

class FilteredReclamationListView(FilterView, SingleTableView):
    table_class = ReclamationTable
    model = ReclamationMainModel
    template_name = 'reclamation_table/index.html'
    filterset_class = ReclamationFilter
    table_pagination = {
        'per_page': 50
    }

    def get_table_data(self):
        return self.object_list

    def get_queryset(self):
        self.request.session['urltoremember'] = self.request.get_full_path()
        return self.model.objects.filter(archive=False).order_by('-id')

在第二种观点中我做到了:

class ReclamationDetailView(DetailView):
    model = ReclamationMainModel
    context_object_name = 'reclamation_data'

    def get_context_data(self, **kwargs):
        context = super(ReclamationDetailView, self).get_context_data(**kwargs)
        context['filter'] = self.request.session['urltoremember']
        return context

在模板中,我更改链接以返回到FilteredReclamationListView到{{ filter }}

a href="{{ filter }}" class="btn btn-default navbar-btn" id="menu-toggle">back</a>