我已经使用QuerySet过滤了模型并将其显示在页面上。我想单击一个下载按钮来下载一个包含上述模型的excel文件(对不起,我是初学者,谢谢)
我试图在用户单击搜索后立即创建一个excel文件,并将其保存到数据库中,并在用户单击通过ID下载时进行下载。 我还尝试将QuerySet作为参数发送,但我不知道该正则表达式提供给该URL。
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>
答案 0 :(得分:0)
有基于类的视图以及mixins
class ModelExportView(ExcelView):
model = SomeModel
您当然可以根据需要操纵代码。