Запомните параметры URL в django-tables2 с помощью django-фильтра

Это мой взгляд:

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 ответа

Я нашел решение своей проблемы. Мой первый взгляд выглядит так:

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>

Ауле, ты можешь хранить фильтр в сессии.

request.session['filter'] = myFilter
Другие вопросы по тегам