PUROGU LADESU

ポエムがメインのブログです。

【Django】チュートリアル7 管理サイトの扱い

その7 管理サイトの扱い

管理サイトのカスタムができる

項目の並び替え

カスタマイズクラス作って、引数の二番目に渡す。

class QuestionAdmin(admin.ModelAdmin):
    fields = ['pub_date', 'question_text']

admin.site.register(Question, QuestionAdmin)

fieldsetsでグループ化できる。

親モデルの入力画面に子モデルの入力欄を表示する

一対多のモデルの場合、デフォルトでは子モデルの入力で親を選択するようになっているが、それは非効率なので。
modelを指定し、extraは入力欄の数。

# テーブル形式か、スタック形式か
class ChoiceInline(admin.TabularInline):
# class ChoiceInline(admin.StackedInline):
    model = Choice
    extra = 3

一覧画面の表示カラム設定

list_display = ('question_text', 'pub_date')

カスタムプロパティもソートできるようにする(モデル側に設定)
xxx.admin_order_field = 'pub_date'
マルバツ表示にする
xxx.boolean = True
カラム表示名を変える
xxx.short_description = 'Published recently?'

その他

指定カラムのフィルターを表示する
list_filter = ['pub_date']
検索欄を表示(like検索)
search_fields = ['question_text']

デザインのカスタマイズ

ベースディレクトリにtemplatesを作る
setting.pyを編集
'DIRS': [ BASE_DIR / 'templates'],

django/contrib/admin/templatesからadmin/base_site.htmlやindex.htmlを上記にコピーする。
templates/admin/xxx.html
それを編集する。

djangoのソースを探す
python -c "import django; print(django.__path__)"

まとめ

ちゃんとカスタマイズすればプロダクションでも使えるかも。