結構前に作ったCSVファイルを管理画面からダウンロードするアプリを汎用にした。
CSVファイルをダウンロードする例は、djangosnippetsにも結構載ってるのでそちらも参考に。
tokibito / django-csvutils — Bitbucket
例えばModelAdminでactionを使えるようにするならこんな感じ。
from csvutils.admin import export_csv class MyModelAdmin(admin.ModelAdmin): actions = [export_csv]
ファイルのエンコーディングをcp932にする場合は、
from csvutils.admin import ExportCSVAction export_csv = ExportCSVAction(encoding='cp932') class MyModelAdmin(admin.ModelAdmin): actions = [export_csv]
とすればよい。
管理画面のアクションは、Django1.1時点ではチェックボックスにチェックを入れないと実行されない。
チェックなしの場合にすべてのデータのダウンロード〜としたい場合は、モンキーパッチを使うことになるぽ。