如何从列表中检索我的Django数据库中的行数据?

我想检索我的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' 

您可以使用csv.DictWriter对象,该对象可以采用字典列表而不是列表,或者使用QuerySet的values_list方法而不是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)