Admin actionsを使う2 - 基本編
前提
Django1.1から使える機能です。
仕様
- 選択したデータのBooleanFieldの値をFalseからTrueに一括変換する処理
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導入の流れ
使用するまでには
- 処理のコーディング
- Admin actionsのラベルの作成
- Admin siteへ登録
以上が基本的な流れとなります。
独自のAdmin actionsを導入する場合の画面は以下の通りです。
独自の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の内容が追加されています。
独自のAdmin actionsを実行する
変更するデータを選択し、"実行"ボタンをクリックします。
実行の結果は以下の通りです。
指定したデータが変更されているのがわかります。
ちょっと待ってください
気になることがありませんか?
わかった人は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)




