今回はDjangoの管理画面のカスタマイズについてまとめておきます。(もちろん備忘録のため)
以前の記事でDjangoのモデル(データベース)を管理画面に表示してみました。
こんな感じでモデル(データベース)の情報を管理画面に反映させることが出来ました。
設定方法の詳しくは過去記事をご確認ください。
今回は応用としてモデルの要素を複数追加していきたいと思います。
やりたいことは、画像(アイコン)のプレビュー表示まで
Djangoのモデル一覧
今回は以下のようなモデルを用意しました。models.py
に記載します。
from django.db import models
# Create your models here.
class UserInfo(models.Model):
user_name = models.CharField(max_length=50, unique=True)
user_icon = models.ImageField(upload_to="image/", blank=True, null=True)
def __str__(self):
return self.user_name
UserInfoクラス(ユーザー情報を扱う)にはユーザー名とユーザーアイコンの要素を持ちます。
models.ImageField
を扱う場合はsettings.py
にimage(画像)の保存ディレクトリを記載しておきます。
以下のように追記するとmedia
ディレクトリが自動で作成されます。また、models.ImageField
のupload_toで指定したimage
に画像が格納されていきます。(Djangoのプロジェクトフォルダから相対的に見ると、
に画像が格納される。)media/image
MEDIA_ROOT=os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
Djangoの管理画面へモデルを追加
admin.py
を編集し、管理画面へモデルを反映していきます。
以下のように編集してください。
from django.utils.safestring import mark_safe
from myapp.models import UserInfo
class UserInfoAdmin(admin.ModelAdmin):
def icon_image(self, obj):
return mark_safe('<img src="{}" style="width:100px;height:auto;">'.format(obj.user_icon.url))
list_display = ('user_name', 'icon_image')
admin.site.register(UserInfo, UserInfoAdmin)
管理画面上でユーザー名とユーザーアイコンを可視化して管理したいのでlist_display
に'user_name'と'icon_image'を追加しています。
管理画面に一覧として表示したい項目はlist_display
に追加してあげればいいわけですね。
ちなみにdef icon_image(self, obj)
は画像をURLではなくプレビュー画像として追加するために記載しています。width:100pxで固定したいときの書き方です。mark_safe()
を扱うのは「そんなもん」って思っています。なんで?と言われてもよくわかりません。
最後にadmin.site.register
で管理画面へ反映します。
第一引数にはモデル名、第二引数にはadminの編集オプションを指定します。
Djangoのモデルを反映
あと、もう一歩です。
忘れてはいけない、マイグレーションを
$ python3 manage.py makemigrations myapp #myappは適宜自分の環境のアプリ名を指定
そして続けて
$ python3 manage.py migrate
これで反映完了です。
エラーコードが出た場合はプロジェクト名、アプリ名がしっかり指定されているか確認してみましょう。もしくはモデルの作り方がマズイのかも..
Djangoの管理画面へプレビュー画像の反映
アプリを立ち上げ
$ python3 manage.py runserver
http://127.0.0.1:8000/admin
へアクセスを行います。
お。User Infos
(モデル名)が追加されてるじゃん。
では、User Infosからユーザー名とユーザーアイコン(画像)の追加を行う。そしてSAVE(保存)すると
しっかり、画像(アイコン)が追加されてる。(やりたかったことはできた。)
こんな感じでDjangoの管理画面へモデル一覧を表示させてみました。
Djangoについて学びたい方へ
書籍で学びたいなら
DjangoのWebアプリの設計・作成はもちろん、Webサーバー・アプリ周りの知識も幅広く扱ってくれています。データベースの知識、クラウドの知識、セキュリティの知識も同時に習得でき、初心者にはぜひおすすめの書籍
Djangoについて深く知りたいという方におすすめしています。
ややプログラミングの知識がないと理解が難しいかもしれません。
pythonが書ける方には非常にタメになるDjangoアプリ開発におすすめ書籍でした。
オンライン授業で学びたいなら
僕はオンラインスクールはUdemy をおすすめします。定番の授業からマニアックな授業まで幅広く扱っているので、学びたいことは大体あります。今回はPython+Djangoの授業をおすすめします。Djangoの基礎から応用までこの授業で学べます。
実際にWEBアプリを作成し、公開するところまで親切に教えてくれます。
【徹底的に解説!】Djangoの基礎をマスターして、3つのアプリを作ろう!
コメント