Стратегии загрузки результата запроса в django
У меня есть страница на django, где я делаю запрос к базе данных. Я хочу загрузить результат в формате csv - но, как я знаю, невозможно добавить две кнопки/функции для одной страницы.
Моим решением было бы добавить ссылку на новую страницу или новое окно, где я снова покажу таблицу результатов и помещу туда кнопку, но сначала я хотел бы спросить, есть ли более элегантный способ сделать это?
view.py
def FilterView(request):
if title_exact_query != '' and title_exact_query is not None:
qs = ExperimentFiles.objects.filter(Q(donor_id=title_exact_query)).values().order_by(
'record_name__date_of_measurement')
context = {
'queryset': qs,
}
return render(request, "search.html", context)
Можно использовать POST-запрос, когда вы хотите загрузить csv, чтобы вы могли легко использовать то же представление, реализуя оператор if для метода запроса.
def FilterView(request):
if title_exact_query != '' and title_exact_query is not None:
qs = ExperimentFiles.objects.filter(Q(donor_id=title_exact_query)).values().order_by(
'record_name__date_of_measurement')
if request.method =="POST":
csv = to_csv(qs) #function for csv creation
response = HttpResponse(csv, content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename=stockitems_misuper.csv'
return response
context = {
'queryset': qs,
}
return render(request, "search.html", context)