Docx 文档没有生成 python-docx

问题描述 投票:0回答:0

最重要的是,html代码中有一个表单询问将从数据库中获取什么时期的记录。 当您单击“生成”按钮时,应该会生成一个 docx 文档。但是由于某种原因没有生成,选择成功,没有报错。 html

<form action="" method="get" class="my-4 ">
    <input type="date" name="date_from" value="{{ date_from }}" id="date_from">
    <input type="date" name="date_until" value="{{ date_until }}" id="date_until">
    <input type="submit" value="Generate" class="btn btn-primary">
</form>

意见

class DirectorOrdersReportView(TemplateView):
    template_name = 'director/orders_report_director.html'
    model = OrderStorage

    def get(self, request, *args, **kwargs):
        date_from = request.GET.get('date_from')
        date_until = request.GET.get('date_until')
        records = OrderStorage.objects.filter(created_at__range=[date_from, date_until])

        return super().get(request, *args, **kwargs, records=records)

    def gen_report_(self):
        current_datetime = datetime.now()
        str_current_datetime = str(current_datetime)
        document = Document()
        docx_title = "report" + str_current_datetime + ".docx"
        document.add_paragraph()
        document.add_paragraph("%s" % date.today().strftime('%B %d, %Y'))
        document.add_paragraph('Orders report')
        qs2 = self.get().records()
        qs2count = qs2.count() + 1
        table = document.add_table(rows=qs2count, cols=8)
        table.style = 'Table Grid'
        table.cell(0, 0).text = 'ID'
        table.cell(0, 1).text = 'User'
        table.cell(0, 2).text = 'Size'
        table.cell(0, 3).text = 'Status'

        for order in self.kwargs:
            qs2 = self.get().records()
            row = qs2.count()
            table.cell(row, 0).text = str(order.pk)
            table.cell(row, 1).text = str(order.user)
            table.cell(row, 2).text = str(order.size)
            table.cell(row, 3).text = str(order.status)
        document.add_page_break()
        
        f = BytesIO()
        document.save(f)
        length = f.tell()
        f.seek(0)
        response = HttpResponse(
            f.getvalue(),
            content_type='application/vnd.openxmlformats-officedocument.wordprocessingml.document'
        )
        response['Content-Disposition'] = 'attachment; filename=' + docx_title
        response['Content-Length'] = length
        return response

收集了该期间的数据,但由于某种原因根本没有创建报告文件... 在我看来,我错误地引用了“记录”对象,但我不明白如何正确地做到这一点。

模型.py

class OrderStorage(models.Model):
    user = models.ForeignKey(to=User, verbose_name='User', on_delete=models.CASCADE)
    size = models.ForeignKey(verbose_name='Size', to=TireSize, on_delete=models.CASCADE)
    status = models.IntegerField(verbose_name='Status', choices=OrderStatus.choices, default=0)
    created_at = models.DateTimeField(verbose_name='Create at', auto_now_add=True)
    updated_at = models.DateTimeField(verbose_name='Update at', auto_now=True)

点击“生成”后。正在填写 docx 文件

python django report python-docx
© www.soinside.com 2019 - 2024. All rights reserved.