2016-10-20 9 views
0

xlsxwriter를 사용하여 데이터베이스의 내용을 장고 관리자에서 Excel 파일로 내보내고 있습니다. Excel 파일의 헤더는 필자의 모델 필드 이름으로 간주되고, 그 다음에 db의 데이터 행이옵니다. 내보내기 프로세스가 작동했는데 다운로드 한 Excel 파일을 열면 내 데이터베이스의 모든 열/데이터가 임의 순서로 표시됩니다. 그들은 Django 관리자에서 볼 수있는 필드와 같은 순서로 나타나지 않습니다. 장고 관리자에서 테이블의 적절한 순서로 정보 표시,xlsxwriter가 내 데이터베이스의 데이터를 장고 관리자에서 Excel로 Excel로 잘못된 순서로 내보내는 이유는 무엇입니까?

열 A - B 열 - 열 C - 열 D - 열 E - 등을 내 보낸 Excel 파일에있는 반면

나는 모든 것을보고하고있다 열 E - - 열 A - 열 D - 열 C - 등이 여기에

내 코드는

열 B, 최대 스크램블. 왜 열 이름과 데이터를 올바른 순서로 내보내지 않을지 이해할 수 없습니다. 어떤 도움을 주셔서 감사합니다!

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' 

     return response 
    else: 
     return render("change_list.html", 
         context_instance=RequestContext(request), 
         template_name='change_list.html') 

답변

0

values()은 행을 사전 목록으로 반환합니다. 파이썬 사전에서는 순서가 없습니다.

+0

아, 설명해드립니다! Django 모델의 필드 순서와 일치하도록 사전을 정렬하는 방법이 있습니까? –