如何以列表的形式从Django数据库中检索行数据?

2024-06-06 03:25:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想以列表的形式检索Django数据库表行中的数据,这样我就可以迭代它并将列表的每个值写入Excel电子表格。我试着用字典来做这件事,但是字典并不是用Python排序的,所以我的列都乱序了。我需要我的Excel电子表格看起来和我的数据库表一样,而不是乱序乱排。我怎样才能做到这一点?在

当前代码:

def dump_attorneys_to_xlsx(request):
    if request.GET.get('export'):
        output = BytesIO()
        workbook = xlsxwriter.Workbook(output, {'in_memory': True})
        worksheet = workbook.add_worksheet('Summary')

        attorneys = Attorney.objects.all().values()
        # Write header
        worksheet.write_row(0, 0, attorneys[0].keys())
        # Write data
        for row_index, row_dict in enumerate(attorneys, start=1):
            worksheet.write_row(row_index, 0, row_dict.values())
        workbook.close()

        output.seek(0)

        response = HttpResponse(output.read(), content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
        response['Content-Disposition'] = 'attachment; filename=summary.xlsx'

Tags: in数据库列表output字典requestxlsxexcel
1条回答
网友
1楼 · 发布于 2024-06-06 03:25:14

您可以使用^{}对象,该对象可以接受字典列表而不是列表,或者使用QuerySet的^{}方法而不是values返回行列表而不是字典。在


否则,您可以使用以下命令命令写入文件(性能不是很好):

keys = attorneys[0].keys()
worksheet.write_row(0, 0, keys)
# Write data
for row_index, row_dict in enumerate(attorneys, start=1):
    row = [row_dict[k] for k in keys]
    worksheet.write_row(row_index, 0, row)

相关问题 更多 >