FAQ: 管理サイト"admin"についてLink to this heading

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

The login cookie isn't being set correctly, because the domain of the cookie sent out by Django doesn't match the domain in your browser. Try setting the SESSION_COOKIE_DOMAIN setting to match your domain. For example, if you're going to "https://www.example.com/admin/" in your browser, set SESSION_COOKIE_DOMAIN = 'www.example.com'.

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

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

管理サイト上でオブジェクトを編集した時、オブジェクトを最後に編集したユーザの情報を特定のフィールドに自動的に入力する方法はありませんか?Link to this heading

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

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

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

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

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

“list_filter” に ManyToManyField を入れたのに、管理サイトがフィルタを表示しません。Link to this heading

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

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

admin画面でいくつかのオブジェクトが表示されません。Link to this heading

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

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

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

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

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

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

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

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

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

スタイル上の細かい違いはある可能性があります。たとえば、いくつかのブラウザでは、テキストボックスなどの角を丸くする機能がサポートされていません。また、レンダリングの結果、ブラウザ間で多少の際はあるかもしれません。いずれも許容範囲内であるはずです。