Для этого есть 2 способа.
Один предназначен для хранения в сеансе, например:
class IssueListView(TemplateListView):
def get_context_data(self, **kwargs):
context = super(IssueListView, self).get_context_data(**kwargs)
self.request.session['filter_set'] = list(context['object_list'].values_list('pk', flat=True)) # This can be done get_queryset method as well
return context
И использовать его в IssuePDF
:
class IssuePDF(ReportTemplateView):
report_title = 'Complaints Register'
model = Issue
object_list = Issue.objects.all()
def get_context_data(self, **kwargs):
context = super(IssuePDF, self).get_context_data(**kwargs)
context['report_title'] = self.report_title
filter_set = self.request.session.get('filter_set', None)
if filter_set:
context['object_list'] = Issue.objects.filter(pk__in=filter_set)
return context
Другой способ достижения этого - передать контекст в качестве параметра get.Например:
class IssueListView(TemplateListView):
def get_context_data(self, **kwargs):
context = super(IssueListView, self).get_context_data(**kwargs)
context['filter_set'] = list(context['object_list'].values_list('pk', flat=True))
return context
В шаблоне обновите кнопку / ссылку для печати следующим образом:
<a href="{url 'app_name:print_view_url_name'}?filter_set={{ filter_set }}"
И используйте ее в IssuePDF
, например:
class IssuePDF(ReportTemplateView):
report_title = 'Complaints Register'
model = Issue
object_list = Issue.objects.all()
def get_context_data(self, **kwargs):
context = super(IssuePDF, self).get_context_data(**kwargs)
context['report_title'] = self.report_title
filter_set = self.request.GET.get('filter_set', None)
if filter_set:
context['object_list'] = Issue.objects.filter(pk__in=filter_set)
return context