Переопределение ответа в представлении на основе классов Django

У меня есть представление, из которого я также хотел бы экспортировать данные в CSV с параметрами поиска и фильтрами. Я хочу, чтобы экспортируемые данные были точно таким же набором запросов, как и в этом представлении, поэтому то, что у меня есть сейчас, неэффективно.

Примечание: Код ниже может выглядеть довольно глупым & некоторые секции бессмысленны, но я просто осторожен с моим NDA, поэтому опускаюсь до анонимного воспроизведения.

class ModelListView(LoginRequiredMixin, ListView):
    model = Model
    template_name = 'list.html'
    paginate_by = 15

    def get_queryset(self):
        if not self.request.user.is_staff:
            queryset = Model.objects.filter()
        queryset = Model.objects.filter()

        search = self.request.GET.get("search", None)


        if search:
            queryset = queryset.filter(
                Q(type__icontains=search) |
                Q(status__icontains=search) |
                Q(prefix__icontains=search) |
                Q(created__icontains=search) |
                Q(message__icontains=search)
                )
        
        # Save most recent queryset to session for
        # use with exporting & retrieval on other pages.
        self.request.session["queryset"] = serializers.serialize('json', queryset)
        return queryset

В настоящее время в конце я сохраняю набор queryset в request.session & затем использую его в отдельном ExportView, который работает, но поставляется с банкой червей.

Мне интересно, где я могу переопределить ответ для представления на основе класса, чтобы я мог вместо этого установить параметр запроса, например ?format=csv & чтобы то же представление возвращало ответ CSV вместо этого.

Я уверен, что это возможно, но я не могу найти в документации то, что мне нужно искать.

Вернуться на верх