У меня есть модель с именем ReportData
. У меня есть форма, которая получит «report_name» и выполнит операцию. Эта операция в основном проходит по объектам, каждый возвращаемый объект имеет файловое поле с файлом '.docx', эта функция объединит все эти файлы в один файл docx.
После этого метод convert()
преобразует 'docx' в 'pdf'. Я могу выполнить этот рабочий процесс, но мне нужно создать временный файл вместо реальных файлов в каталоге мультимедиа. Мое представление на основе классов ниже:
class FilesListView(LoginRequiredMixin,ListView):
model = ReportData
template_name = 'report/myfiles.html'
context_object_name = 'reportdata'
def get_queryset(self):
return ReportData.objects.filter(preparedby=self.request.user).order_by('-date_created')
def post(self,request,*args,**kwargs):
filtervalue = request.POST.get("report_name","")
reportsforPDF = ReportData.objects.filter(reportname=filtervalue)
reporturl = settings.MEDIA_ROOT[0:-6]
master = Document(reporturl + reportsforPDF.first().document.url)
composer = Composer(master)
i=0
for object in reportsforPDF:
if i>0:
doc = Document(reporturl + object.document.url)
composer.append(doc)
i+=1
storage = settings.MEDIA_ROOT + '/merged/{}.docx'.format(filtervalue)
composer.save(storage)
pythoncom.CoInitialize()
convert(settings.MEDIA_ROOT + '/merged/{}.docx'.format(filtervalue))
context = {
'pdf_url': '/media/merged/{}.pdf'.format(filtervalue)
}
return render(request, 'report/myfiles.html', context=context)
Также, как я могу использовать get_queryset
внутри функции post, потому что мой текущий код не возвращает объектов?