Admin actionsを使う2 - 基本編

前提

Django1.1から使える機能です。

仕様

modelとadminの作成

models.py

from django.db.import models

class Content(models.Model):
    title = models.CharField(max_length = 50)
    content = models.TextFIeld()
    published = models.BooleanField(default = False)
    attach - models.FileField(upload_to = "content", blank = True, null = True)

    def __unicode__(self):
        return self.title

admin.py

from django.contrib import admin
from appname.models import Content

class ContentAdmin(admin.ModelAdmin):
    list_display = ('title', 'published', )
    ordering = ['title']

admin.site.register(Content, ContentAdmin)

独自のAdmin actions導入の流れ

使用するまでには

  1. 処理のコーディング
  2. Admin actionsのラベルの作成
  3. Admin siteへ登録

以上が基本的な流れとなります。

独自のAdmin actionsを導入する場合の画面は以下の通りです。

adminactions01

独自のAdmin actionsを作る

Admin actionsはadmin.pyを編集するだけで導入できます。

admin.py

from django.contrib import admin
from appname.models import Content

class ContentAdmin(admin.ModelAdmin):
    list_display = ('title', 'published', )
    ordering = ['title']
    actions = ['true_action']

    def true_action(self, request, queryset):
        queryset.update(published = True)
    true_action.shortdescription = "Mark selected post as Published True"

admin.site.register(Content, ContentAdmin)

導入した画面は以下の通りです。
short_descriptionの内容が追加されています。

adminactions02

独自のAdmin actionsを実行する

変更するデータを選択し、"実行"ボタンをクリックします。

adminactions03

実行の結果は以下の通りです。
指定したデータが変更されているのがわかります。

adminactions04

ちょっと待ってください

気になることがありませんか?

わかった人はAdmin siteをよく見ている人です。

独自のAdmin actionsを実行後のメッセージ表示です。
それを追加しましょう。

admin.py

from django.contrib import admin
from appname.models import Content

class ContentAdmin(admin.ModelAdmin):
    list_display = ('title', 'published', )
    ordering = ['title']
    actions = ['true_action']

    def true_action(self, request, queryset):
        #queryset.update(published = True)
        count = queryset.filter(published = False).update(published = True)
        self.message_user(request, '%s posts mark as Published True.' % count)
    true_action.shortdescription = "Mark selected post as Published True"

admin.site.register(Content, ContentAdmin)

adminactions05

twitter 2009-07-30 23:13:25.715092

関連ページ

参照サイト

Recent Updates

URLConf Tip 01 - キャプチャの有無にかかわらず同一のviewで処理する
Markdownの入力補助"wmd"をAdmin siteで使う
ModelFormでfieldのwidgetを変更する
動的なformを作る 6 - Dynamic Inline Admin site編
Formsetsを使う3 - inlineformset_factory編
動的なformを作る 5 - django-dynamic-formset編
Formクラスからメディアを定義する
複数のmodelを結合する 2 - Proxy model編
複数のmodelを結合する 1
ModelFormでfieldの表示順番を変える
Admin siteのwidgetを個別に変更する
formfield_overridesを使ってAdmin siteのwidgetを変更する
Admin siteのlist_displayをカスタマイズする - リンク編
Admin siteのlist_displayをカスタマイズする - 基本編
Admin siteのTextareaの高さを自在に変更する - admin.py編