Запомните параметры 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