2012-10-25 2 views
2

나는 무거운 django-tables2 사용자이고 django-table에 일반 확장을 추가 할 생각입니다 : 사용자가 모든 테이블 데이터를 Excel로 내보낼 수있게하고 싶습니다. xlwt 사용) 또는 csv 그냥 테이블 근처 어딘가에 버튼을 클릭하여.django-tables2 확장하기

이제 일반화되지 않은 방식으로이 템플릿을 구현했습니다. 즉, 템플릿에 POST 양식과 단추가 포함되어 있고 단추가 클릭 한보기를 클릭했는지 확인하는 기능이 추가되었습니다. . 버튼을 클릭하면 일반 템플릿 대신 xls가 반환됩니다. 또한 django-table2 테이블 (모든 테이블)을 가져오고 xlwt 시트 (통합 문서에 넣기 위해)로 변환하는 일반 함수를 구현했습니다.

괜찮습니다. 그러나이 버튼을 모든 테이블에 사용할 것이므로 테이블이 포함될 모든 HTML 템플릿에 내보내기 양식과 버튼을 추가하고 싶지는 않습니다. 또한 모든 내보기에 POST 검사를 추가하고 싶지 않습니다! 이것은 확실히 건조하지 않습니다 : (

이상적으로, 나는 클래스를 가지고 django-tables2의 Table 클래스를 확장하는 ExportTable을 말하고 싶습니다. 그러면 테이블을 만들 때 사용할 수 있습니다. ExportTable을 기본 클래스로 사용하면 버튼과 뷰에 테이블을 내보내는 데 필요한 구성 요소가 생깁니다. 내가 이해할 수있는 것은 가능하지 않습니다. (

누군가 내가 나에게 어떤 방식으로 제안해야합니까? django-tables2를 확장하여 "내보내기"기능을 최대한의 DRY 방식으로 추가 할 수 있습니까? 즉, 템플릿 (또는 확장)에 {% render_table table %} 태그 만 사용할 수 있습니다.) 그리고 내보기에 검사를 추가하여 사용자가 내보내기 버튼을 클릭했는지 확인하지 않아도됩니다 (그리고 c 추가보기 및 url 라우트를 추가 할 필요없이). 제네릭 클래스 뷰를 사용할 수 있습니까?

내가 가장 건조하고 완전한 (I 댓글 일부 소스 코드를 가지고 싶습니다하시기 바랍니다) 받아 들일 것입니다 답 :

+0

좋은 질문입니다. 아직 간단한 해결책을 찾지 못한 까닭이 있습니다. 이는 테이블에서 일반적인 '동작'을 지원하는 것과 비슷한 유형의 문제입니다. 'SingleTableView'를 사용하여 만족한다면, 요청에 접근 할 수 있기 때문에, 거기에 후크를 추가 할 수 있습니다. –

답변

2

내가 CSV 및 XLS에 테이블 2 데이터를 내보낼 django-tables2-reports를 사용합니다. mo (reported here)에서 xls 관련 문제가 있지만 곧 해결책이 나타날 것이라고 확신합니다.

+0

나는 그것을 매우 좋아한다! 감사 :) – Serafeim