Я отфильтровал модели с помощью QuerySet и отобразил их на странице. Я хочу загрузить файл Excel, который содержит указанные выше модели, по нажатию кнопки загрузки. (Извините, я новичок и спасибо)
Iя пытаюсь создать файл Excel, как только пользователь нажимает кнопку поиска, сохранить его в базе данных и загрузить, когда пользователь нажимает кнопку загрузки с помощью идентификатора.Я также пытался отправить QuerySet в качестве параметра, но я не знаю регулярное выражение для URL.
Views.py:
class SearchView(View):
template_name = 'auto_project/search_form.html'
form_class=ExcelFile
qs=''
def get(self,request):
qs = report.objects.all()
date1 = self.request.GET.get('date1','')
date2 = self.request.GET.get('date2','')
#Filter Stuff
return render(self.request,self.template_name,{'qs':qs})
def post(self,request):
form=self.form_class(request.POST)
if form.is_valid():
f = form.save(commit=False)
response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename=Report.xlsx'
xlsx_data = WriteToExcel(self.qs) #Function
response.write(xlsx_data)
f.file = response
f.save()
return render(self.request,self.template_name,{'f':f})
def report_download(request,file_id):
response = Excel.objects.get(id=file_id)
return response
#forms.py:
class ExcelFile(forms.ModelForm):
class Meta:
model = Excel
fields = ['id','file']
#urls.py:
urlpatterns = [
url(r'^search/$',views.SearchView.as_view(),name='search'),
url(r'^download/(?P<file_id>[0-9]+)/$',views.report_download,name='dload'),]
#search_from.html:
<form action='.' method='GET'>
<!-- some input fields and a submit button-->
</form>
<button type="submit"><a href="{% url 'auto_project:dload' f.id %}">Download</a></button>