FAQ: 管理サイト”admin”について¶
ログインできません。正しいユーザ名とパスワードを入力したのに、再度ログインページが表示されます。エラーメッセージも出ません。¶
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 を使った場合には表示されません。¶
「Django を Apache と mod_swgi
とともに使うには?」内の 管理サイト用のファイルを公開する方法 を参照してください。
“list_filter” に ManyToManyField を入れたのに、管理サイトがフィルタを表示しません。¶
Django が ManyToManyField
に対してフィルタを表示するのは、リレーション 先のオブジェクトが複数のときだけです。
例えば、 list_filter
に sites が含まれていて、かつデータベースに1個しかsiteのデータが無い場合はSiteによるフィルタリングは表示されません。この場合Siteによるフィルタリングは無意味だからです。
admin画面でいくつかのオブジェクトが表示されません。¶
おかしな行数カウントが発生するのは、ForeignKeyの値が抜けている場合、又はForeignKeyであるフィールドが間違って null=False
に設定されている事が原因です。
もし ForeignKey
が存在しないオブジェクトを指しているデータがあり、そのフィールドが list_display
に含まれている場合、adminのchangelistには表示されません。なぜならばDjangoのモデルが宣言している整合性制約はデータベースレベルまでは実装されていないからです。
admin インターフェイスの機能をカスタマイズしたい場合にはどうすればいいですか?¶
いくつかの方法があります。まず、Django が自動的に生成する追加/変更フォームに修正を加えたい場合には、モデルクラス Admin の js パラメータ を介して、ページに好きな JavaScript モジュールを組み込むことができます。このパラメータには、JavaScript モジュールへの URL を表す文字列のリストを指定します。各 URL は、<script> タグを使って admin のフォームに埋め込まれます。
自動生成されたフォームをただ修正するのではなく、より柔軟なカスタマイズをしたければ、管理サイト用のカスタムビューを自分で書くことができます。管理サイト自体が Django で動いているので、自分でカスタムビューを書くことで、認証システムやパーミッションのチェック、その他なんでも好きなことができます。
管理サイトのデザインをカスタマイズしたいならば、次の質問が参考になります。
動的に生成された管理サイトが見難いのですが、どうすれば修正できますか?¶
デフォルトのデザインが好みでなければ、CSS や関連する画像ファイルを編集することで管理サイトの見栄えを変更することができます。サイトは、構造化された HTML とたくさんの CSS のフックを使って構築されているので、スタイルシートを編集すれば、どんな場所であっても自由にカスタマイズすることができるはずです。
管理サイトをサポートしているブラウザを教えてください。¶
管理サイトは、よく知られた例外である IE6 を除く YUI’s A-grade のブラウザ上で、すべての機能が完全に動作します。
スタイル上の細かい違いはある可能性があります。たとえば、いくつかのブラウザでは、テキストボックスなどの角を丸くする機能がサポートされていません。また、レンダリングの結果、ブラウザ間で多少の際はあるかもしれません。いずれも許容範囲内であるはずです。