Admin siteの画面を効率的に表示する

省スペースで情報多く

NetBookも多く出回り、外出用に持っている方も多いと思います。

Admin siteは自動生成して便利ですが、フィールド順に上から表示されフィールド数によってはNetBookには向かない画面になってしまう場合があります。

少しでも省スペースにして表示項目を多くしてみたいものです。

ソース

以下の'models.py'と'admin.py'を使用して試してみます。

models.py

from django.db import models
import datetime
from django.contrib.auth.models import User

class Tag(models.Model):
    tag = models.CharField(max_length = 20)

    def __unicode__(self):
        return self.tag

class Blog(models.Model):
    title = models.CharField(max_length = 50)
    author = modles.ForeignKey(User)
    content = models.TextField()
    post_page = models.DateTimeField()
    tags = models.ManyToManyField(Tag)

    def __unicode__(self):
        return self.title

    def save(self):
        if not self.id:
            self.post_page = datetime.datetime.now()
        save(Blog, self).save()

admin.py

from django.contrib import admin

class BlogAdmin(admin.ModelAdmin):
    pass

admin.site.register(Blog, BlogAdmin)

上記をAdmin siteで表示すると以下のようになります。

adminecospace01

省スペース策 その1

常に表示しないフィールドについては、クリックすることにより表示・非表示できるようにしておくと便利です。

これはDjango admin サイトfieldsetsに書かれている内容を参照しました。

admin.py

from django.contrib import admin

class BlogAdmin(admin.ModelAdmin):
    fieldsets = (
        (None, {'fields': ('title', 'author', 'content', 'post_date')}),
        ('Tag', {'classes': ('collapse', ), 'fields' : ('tags', )}),
    )

admin.site.register(Blog, BlogAdmin)

上記のように'admin.py'を変更すると以下のようになります。

adminecospace02

省スペース策 その2

'省スペース策 その1'よりも、もっと効率よく複数のフィールドを1段で表示できたらいいと思いませんか?

それが出来るんです!

以下のようにするだけで実現可能です。

admin.py

from django.contrib import admin

class BlogAdmin(admin.ModelAdmin):
    fieldsets = (
        (None, {'fields': ('title', ('author', 'post_date'), 'content')}),
        ('Tag', {'classes': ('collapse', ), 'fields' : ('tags', )}),
    )

admin.site.register(Blog, BlogAdmin)

'author'の段に'post_date'フィールドが同列で表示されるようになりました。

adminecospace03

これらを利用して効率のいいAdmin siteを作ってみてはいかがでしょうか?

twitter 2009-06-27 17:41:12.376779

参照サイト

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編