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

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

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

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

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

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

Django が ManyToManyField に対してフィルタを表示するのは、リレーション先のオブジェクトが複数のときだけです。

例えば、 list_filtersites が含まれていて、かつデータベースに1個しかサイトのデータが無い場合はサイトによるフィルタリングは表示されません。この場合、サイトによるフィルタリングは無意味だからです。

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

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

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

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

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

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

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

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

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

管理サイトは、よく知られた例外である IE6 を除く YUI's A-grade のブラウザ上で、すべての機能が完全に動作します。

サポートされているブラウザ間でもスタイル上の細かい違いがあるかもしれません。例えば、いくつかのブラウザでは、角を丸くする機能がサポートされていません。また、ブラウザ間でレンダリングの結果に許容範囲内の差異があることが考えられます。

Back to Top