Как экспортировать отфильтрованные модели в файл Excel? - PullRequest
1 голос
/ 09 июня 2019

Я отфильтровал модели с помощью 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>

1 Ответ

0 голосов
/ 09 июня 2019

check django-excel-response

Есть классовые представления, а также миксины

class ModelExportView(ExcelView):
    model = SomeModel

Вы, конечно, можете манипулировать кодом для своих нужд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...