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()
を使って、管理サイト上でのオブジェクトの表示と編集の権限をコントロールできます。
「 mod_wsgi
で Django を使うには?」内の 管理サイト用のファイルを公開する方法 を参照してください。
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における主なブラウザも含まれています。
将来の変更によりますが、 もしかしたら ブラウザ間で多少の見た目の違いがあるかもしれません。これらはレンダリングにおける許容範囲内の違いであると考えられています。
2022年6月01日