私は django-tables2 のヘビー ユーザーであり、django-table に一般的な拡張機能を追加することを考えました: ユーザーがすべてのテーブル データを Excel (xlwt を使用) または csv にエクスポートできるようにしたいだけです。テーブルの近くにあるボタンをクリックします。
ここで、これを非一般的な方法で実装しました。つまり、テンプレートに POST フォームとボタンを含め、テーブルを埋めるビューでボタンがクリックされたかどうかを確認するチェックを追加しました。ボタンをクリックすると、通常のテンプレートの代わりに xls が返されます。また、django-table2 テーブル (任意のテーブル) を取得し、それを xlwt シートに変換する汎用関数を実装しました (ワークブックに配置するため)。
これは正常に機能していますが、このボタンをすべてのテーブルに使用するため、テーブルを含むすべての HTML テンプレートにエクスポート フォームとボタンを追加したくありません。また、すべてのビューに POST チェックを追加したくありません。これは間違いなくDRYではありません:(
理想的には、django-tables2 の Table クラスを拡張し、代わりに使用できる ExportTable としましょう。ExportTable を基本クラスとして使用してテーブルを作成すると、ボタンとビューには、テーブルをエクスポートするために必要なコンポーネントが含まれます。私が理解できることから、これは不可能です:(
可能な限り最もDRYな方法で「エクスポート」機能を追加できるようにするために、django-tables2を拡張する方法を誰かが私に提案できますか? つまり、テンプレート (またはその拡張) で {% render_table table %} タグのみを使用でき、ビューにチェックを追加して、ユーザーがエクスポート ボタンをクリックしたかどうかを確認する必要がありません (およびもちろん、それを処理するためだけにビューや URL ルートを追加する必要はありません)。ジェネリッククラスビューは行くべきですか?
最もDRYで完全なものを受け入れます(コメント付きのソースコードが欲しいです)答え:)