MNUにてインターンをさせていただいています、
豊橋技術科学大学の近藤です。
DjangoのAdminサイトをカスタマイズしていたので、内容をまとめてみました。
・ BooleanFieldならBooleanFieldListFilter
・ ForienKeyならRelatedFieldListFilter
・ ChoicesならChoicesFieldListFilter
・ DateFieldならDateFieldListFilter
が呼び出され、当てはまらなかったら
・ Fieldのすべての値を出したListでフィルターするAllValuesFieldListFilter
が呼び出される
指定して設定する際は、
DjangoのAdminサイトをカスタマイズしていたので、内容をまとめてみました。
アクションの追加
FileFieldを使ってファイルを管理していたので、ファイルを削除できるアクションを追加してみました。from django.contrib import admin from .models import Hoge def file_delete(modeladmin, request, queryset): for query in queryset: query.file_delete() # modelsに記述した除去メソッド file_delete.short_description = u'ドロップダウンに表示するアクション名' class HogeAdmin(admin.ModelAdmin): actions = [ file_delete ] admin.site.register(Hoge, HogeAdmin)
フィルターの追加
アクション追加のついでにファイルがあるかでフィルターできるように。call FileListFilter(admin.SimpleListFilter): title = u'フィルター名' parameter_name = 'file' # urlのパラメタ def lookups(self, request, modeladmin): return ( ('true', u'あり'), ('false', u'なし'), ) def queryset(self, request, queryset): if self.value() == 'true': return queryset.exclude(file__exact='') elif self.value() == 'false': return queryset.filter(file__exact='') class HogeAdmin(admin.ModelAdmin): list_filter = (FileListFilter) actions = [ file_delete ]モデルにあるフィールドを用いてフィルターする際はそのまま、
list_filter = ('is_hoge',)とする。 内部では、
・ BooleanFieldならBooleanFieldListFilter
・ ForienKeyならRelatedFieldListFilter
・ ChoicesならChoicesFieldListFilter
・ DateFieldならDateFieldListFilter
が呼び出され、当てはまらなかったら
・ Fieldのすべての値を出したListでフィルターするAllValuesFieldListFilter
が呼び出される
指定して設定する際は、
list_filter = (('is_hoge', admin.BooleanFieldListFilter),)とする。
コメント
コメントを投稿