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で表示すると以下のようになります。
省スペース策 その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'を変更すると以下のようになります。
省スペース策 その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'フィールドが同列で表示されるようになりました。
これらを利用して効率のいいAdmin siteを作ってみてはいかがでしょうか?


