Django - извлечение отфильтрованных данных в Excel - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть django -фильтр (OrderFilter) для отображения отфильтрованной таблицы, следующий шаг - экспортировать эту таблицу в Excel. Экспорт работает, но у меня есть только заголовок ... Можете ли вы проверить мой код и сказать мне, где проблема

Views.py

def Order(request):
    filter= OrderFilter(request.GET, queryset=Order.objects.all())
    orders= filter.qs.order_by('-Date')

    """
    Don't work
    Category_query = request.GET.get('Category')
    qs = Order.objects.filter(Category= Category_query)
    """    
    if request.GET.get('Export') == 'Export':    
        response = HttpResponse(content_type='application/ms-excel')
        response['Content-Disposition'] = 'attachment; filename="data.xlsx"'

        wb = xlwt.Workbook(encoding='utf-8')
        ws = wb.add_sheet('Data')

        row_num = 0

        font_style = xlwt.XFStyle()
        font_style.font.bold = True

        columns = ['Date', 'Category', 'Item']
        for col_num in range(len(columns)):
         ws.write(row_num, col_num, columns[col_num], font_style)

        font_style = xlwt.XFStyle()

        rows=qs.values_list('Date', 'Category', 'Item')
        for row, rowdata in enumerate(rows):
            row_num += 1
            for col, val in enumerate(rowdata):
                if isinstance(val,datetime.date):
                    val = val.strftime('%d/%m/%Y')
                ws.write(row_num, col, val, font_style)

        wb.save(response)
        return response
    return render(request, 'template.html',{'orders':orders,'filter': filter})

шаблон. html

<form method="get">
    {{filter.form}}
    <button class="btn btn-primary" type="submit">Search</button>
</form>
<form method="GET" >
    <button class="btn btn-warning" type="submit" value="Export" name="Export"> Export</button>
</form>
...