FAQ: 管理インタフェース

ログインできません。正しいユーザ名とパスワードを入力したのに、再度ログインページが表示されます。エラーメッセージも出ません。

Django から送信されたクッキーのドメインはお使いのブラウザのドメインと一致していないため、ログインクッキーは正しく設定されていません。 SESSION_COOKIE_DOMAIN をあなたのドメインと同じものに設定してみてください。例えばお使いのブラウザで "https://www.example.com/admin/" に飛ぶ場合には SESSION_COOKIE_DOMAIN = 'www.example.com' と設定します。

ログインできません。正しいユーザ名とパスワードを入力したはずなのに、再度ログインページが開き、「正しいユーザ名とパスワードを入力してください」というエラーメッセージが表示されます。

ユーザ名とパスワードが本当に正しい場合、ユーザアカウントが is_active で、かつ is_staff が True になっているか確認してください。管理サイトにアクセスできるのは、is_active と is_staff がともに True のユーザだけです。

管理サイト上で最後にオブジェクトを編集したユーザの情報をあるフィールドに自動的に設定する方法はありますか?

ModelAdmin クラスが用意しているカスタマイズ用のフックを利用すれば、オブジェクトを保存するときに、リクエストから取り出した情報に基づいてフィールドの値を変更できます。リクエストから現在のユーザを取り出して、 save_model() フックをカスタマイズすることで、オブジェクトを編集したユーザをオブジェクトに反映させることができます。 ModelAdmin メソッドのドキュメント にサンプルがあるので参考にしてください。

管理サイト上で、オブジェクトを最初に作成したユーザだけがオブジェクトを編集できるようにアクセス権を制限するにはどうすればよいですか?

ModelAdmin クラスが、管理サイト上の任意のオブジェクトの表示と編集の権限をコントロールするためのカスタマイズ用のフックを提供しています。リクエストから現在のユーザ情報を取り出す同様のトリックを使うことで、 get_queryset()has_change_permission() を使って、管理サイト上でのオブジェクトの表示と編集の権限をコントロールできます。

開発サーバでは管理サイトの CSS や画像がうまく表示されるのに、mod_wsgi を使った場合には表示されません。

mod_wsgi で Django を使うには?」内の 管理サイト用のファイルを公開する方法 を参照してください。

“list_filter” に ManyToManyField を入れたのに、フィルタが表示されません。

Django won't bother displaying the filter for a ManyToManyField if there are no related objects.

For example, if your list_filter includes sites, and there are no sites in your database, it won't display a "Site" filter. In that case, filtering by site would be meaningless.

管理サイトでいくつかのオブジェクトが表示されません。

おかしな行数カウントが発生するのは、ForeignKeyの値が抜けている場合、または ForeignKeyであるフィールドが間違って null=False に設定されていることが原因です。もし ForeignKey が存在しないオブジェクトを指しているデータがあり、そのフィールドが list_display に含まれている場合、管理サイトの更新リストには表示されません。なぜならば Django のモデルはデータベースレベルで実装されていない整合性制約を宣言しているからです。

管理インターフェイスの機能をカスタマイズしたい場合にはどうすればいいですか?

いくつかの方法があります。まず、Django が自動的に生成する追加/変更フォームに修正を加えたい場合には、モデルクラス Admin の js パラメータ を介して、ページに好きな JavaScript モジュールを組み込むことができます。このパラメータには、JavaScript モジュールへの URL を表す文字列のリストを指定します。各 URL は、<script> タグを使って管理フォームに埋め込まれます。

自動生成されたフォームをただ修正するのではなく、より柔軟なカスタマイズをしたければ、管理サイト用のカスタムビューを自分で書くことができます。管理サイト自体が Django で動いているので、自分でカスタムビューを書くことで、認証システムやパーミッションのチェック、その他なんでも好きなことができます。

管理サイトのデザインをカスタマイズしたいならば、次の質問が参考になります。

動的に生成された管理サイトが見にくいのですが、どうすれば修正できますか?

デフォルトのデザインが好みでなければ、CSS や関連する画像ファイルを編集することで管理サイトの見栄えを変更することができます。サイトは、構造化された HTML とたくさんの CSS のフックを使って構築されているので、スタイルシートを編集すれば、何であっても自由にカスタマイズすることができるはずです。

管理サイトをサポートしているブラウザを教えてください。

adminは、今日のウェブ標準に準拠した最新バージョンのブラウザで完璧に機能します。デスクトップでいうと、Chrome, Edge, Firefox, Opera, Safariなどです。

モバイルやタブレット端末上でも、adminはウェブ標準に準拠したブラウザにレスポンシブな体験を提供します。これには、AndroidとiOSにおける主なブラウザも含まれています。

将来の変更によりますが、 もしかしたら ブラウザ間で多少の見た目の違いがあるかもしれません。これらはレンダリングにおける許容範囲内の違いであると考えられています。