CSVファイルダウンロードをちょっとだけ汎用に

結構前に作った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時点ではチェックボックスにチェックを入れないと実行されない。
チェックなしの場合にすべてのデータのダウンロード〜としたい場合は、モンキーパッチを使うことになるぽ。