スキップしてメイン コンテンツに移動

インターン(その11)

MNUにてインターンをさせていただいています、 豊橋技術科学大学の近藤です。

 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),)
とする。

コメント

このブログの人気の投稿

はじめまして!

はじめまして!
株式会社MNUで新しくブログを始めます。
主に、プログラムに関する技術的なことを中心に社員が持ち回りで書いていきます。
皆様のお役に立てれば幸いです。

どうぞ、これからよろしくお願いします。


ここから下はコードを表示するサンプルです。

int x = foo(); /* This is a comment This is not code Continuation of comment */ int y = bar(); // This is line 4. foo(); bar(); baz(); boo(); far(); faz(); shfor target do WORKDIR=$(mktemp -d "$EXTRACTHOMEDIR"/XXXXXX) case "$target" in *.[Tt][Gg][Zz]|*.[Tt][Aa][Rr].[Gg][Zz]|*.[Tt][Aa][Rr].[Zz]) tar vzxf "$target" -C "$WORKDIR" move_to_currentpath "$WORKDIR" "$target" ;; *.[Tt][Bb][Zz]|*.[Tt][Aa][Rr].[Bb][Zz]2) tar vjxf "$target" -C "$WORKDIR" move_to_currentpath "$WORKDIR" "$target" ;; *.[Gg][Zz]) gzip -d "$target" move_to_currentpath "$WORKDIR" "$target" ;; *.[Zz][Ii][Pp]|*.[JjWw][Aa][Rr]) check_required_program unzip /usr/p…

液晶ディスプレイのパネル構造に関する特許を取得しました

はじめまして、MNUの伊東です。
先日、液晶ディスプレイのパネル構造に関する特許を出願し、無事審査を通りましたのでこれからそれに関する技術的ポイントについて記載して参りたいと思います。