Переопределение ответа в представлении на основе классов 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 вместо этого.
Я уверен, что это возможно, но я не могу найти в документации то, что мне нужно искать.