AWS / PHP / Python ちょいメモ

amazon web service , PHP, Python を使ったときのメモ。日本語でググってもわからなかった事を中心に。

Django 管理サイト カスタマイズ まとめ

Django でアプリを作る際に、管理サイト admin を有効化することで、各種Modelのデーターを操作できるWebアプリが使えるようになります。少し手をいれていくと簡単にカスタマイズできるので、いくつかメモを残しておきます。

admin について

アプリで定義した Model に対して、データー追加・変更・削除などを行う事ができるWebアプリです。

標準では 各Modelのデーターリスト画面、追加・変更画面 の2つが提供されてるようです。その他Home, パスワード変更画面なども、最初から動作します。

f:id:hidehara:20141208023358p:plain


データー表示だけをする画面のようなものが必要なれば、admin template を持ってきて修正をするぐらいで追加ができる仕組みになっています。urls.py と views.py の内容に慣れてくると、このあたりもすぐに思いつくようになりそうです。

はじめて触る時

最初はやはり、公式のチュートリアルが良いかと。

順番に操作していくと、カスタマイズする概要までわかります。

とはいえ僕がDjangoを触りだした時には、書いてある意味がわからずな状態ではあったので、後から戻ったら有用性がわかったという感じです。admin で操作したいModelだけを選択できたり、表示するフィールドを選択したりと、基本的なところは押さえられています。

カスタマイズ(すぐできる)

各種プロパティの設定を数行行うだけで、作りたかった画面の80%は出来そうなぐらい用意されています。


こちらのエントリーが、詳しく綺麗にまとまっていて参考になりました。絞り込みとか検索とか、便利ですよね。

あと action を消したり・作ったりするのも良いカスタマイズかと。

例えば、ログをみる画面では delete action を表示させなくしたりしています。

csvエクスポートする action が公開されていたりもしました。

カスタマイズ(権限系)

admin から追加や削除ボタンは不要という時には、次のメソッドをoverloadして False を返すようにすると、画面からボタンが消えます。

admin.py

class MyAdmin(admin.ModelAdmin):
    def has_add_permission(self, request):
        return False

※引用元:python - How to remove Add button in Django admin, for specific Model? - Stack Overflow

add, change, delete の3つがあるので必要に応じてカスタマイズすると、操作がわかりやすくなります。

カスタマイズ(ページ追加)

admin に、カスタムページを追加する事もできます。

管理系の画面を、admin に一手に集約するという事もできますね。

いくつか参考

その他、カスタマイズする上での心がけみたいなのは、IBMのブログが良いと思いました。

templateのコピーや、コードの参照の為にソースがあるディレクトリはよく見るので、まずリンクしておくのは確かに良いなぁと思いながら作業しました。行レベルのパーミッションを追加したいような時には、一読すると良いかと。

その他

なお、手を入れすぎるとフレームワークのバージョンアップの際に、悩んだりする事もあるようなので、ほどほどにしておくのがいいのかもしれません(と、紹介したブログに書かれてました)。admin も一つのアプリということで、仕様も変更になるようですし。