{"title":"Django の admin サイト","version":"6.0","locale":"ja","docname":"ref/contrib/admin/index","url":"/ja/6.0/ref/contrib/admin/","canonical":"https://djangodocs.dev/ja/6.0/ref/contrib/admin/","summary":"Django のパワフルな特徴の1つは、自動的に生成される admin インタフェースです。あなたのモデルクラスからメタデータを読み取り、モデル中心のインタフェースを提供します。このインタフェースのおかげで、ユーザはあなたのサイトのコンテンツを操作できます。admin…","html":"<span id=\"the-django-admin-site\"></span><h1>Django の admin サイト<a class=\"heading-anchor\" href=\"#module-django.contrib.admin\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Django のパワフルな特徴の1つは、自動的に生成される admin インタフェースです。あなたのモデルクラスからメタデータを読み取り、モデル中心のインタフェースを提供します。このインタフェースのおかげで、ユーザはあなたのサイトのコンテンツを操作できます。admin サイトのオススメの使い方は、組織内で利用する管理ツールに利用を制限することです。admin サイトは、あなたのサイトのフロントエンドやその周辺を含んだ全体を作成することを意図していません。</p>\n<p>admin サイトは、カスタマイゼーションのためのたくさんのフックを持っています。しかしそれらのフックを使う際には気をつけてください。もしあなたが、データベースのテーブルとフィールドを使用しないような、よりプロセス中心のインタフェースを提供する必要があるなら、おそらく自分でビューを書いたほうが良いでしょう。</p>\n<p>このドキュメントでは、Django の admin インタフェースを有効にして使用したりカスタマイズする方法について説明します。</p>\n<section id=\"overview\">\n<h2>概要<a class=\"heading-anchor\" href=\"#overview\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>admin サイトは <a class=\"reference internal\" href=\"/ja/6.0/ref/django-admin/#django-admin-startproject\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">startproject</span></code></a> で使用されるデフォルトのプロジェクトテンプレートで有効になります。</p>\n<p>デフォルトのプロジェクトテンプレートを使用していない場合、要件は以下の通りです:</p>\n<ol class=\"arabic simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.admin'</span></code> とその依存関係である <a class=\"reference internal\" href=\"/ja/6.0/topics/auth/#module-django.contrib.auth\" title=\"django.contrib.auth: Django's authentication framework.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.auth</span></code></a>, <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/contenttypes/#module-django.contrib.contenttypes\" title=\"django.contrib.contenttypes: Provides generic interface to installed models.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.contenttypes</span></code></a>, <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/messages/#module-django.contrib.messages\" title=\"django.contrib.messages: Provides cookie- and session-based temporary message storage.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.messages</span></code></a>, および <a class=\"reference internal\" href=\"/ja/6.0/topics/http/sessions/#module-django.contrib.sessions\" title=\"django.contrib.sessions: Provides session management for Django projects.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.sessions</span></code></a> を、 <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> 設定に追加してください。</p></li>\n<li><p><a class=\"reference internal\" href=\"/ja/6.0/topics/templates/#django.template.backends.django.DjangoTemplates\" title=\"django.template.backends.django.DjangoTemplates\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DjangoTemplates</span></code></a> バックエンドを、<a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TEMPLATES</span></code></a> 設定で構成し、<code class=\"docutils literal notranslate\"><span class=\"pre\">django.template.context_processors.request</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.auth.context_processors.auth</span></code>, および <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.messages.context_processors.messages</span></code> を <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-TEMPLATES-OPTIONS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">OPTIONS</span></code></a> の <code class=\"docutils literal notranslate\"><span class=\"pre\">'context_processors'</span></code> オプションに含めてください。</p></li>\n<li><p><a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MIDDLEWARE</span></code></a> 設定をカスタマイズしている場合、<a class=\"reference internal\" href=\"/ja/6.0/ref/middleware/#django.contrib.sessions.middleware.SessionMiddleware\" title=\"django.contrib.sessions.middleware.SessionMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.contrib.sessions.middleware.SessionMiddleware</span></code></a>、<a class=\"reference internal\" href=\"/ja/6.0/ref/middleware/#django.contrib.auth.middleware.AuthenticationMiddleware\" title=\"django.contrib.auth.middleware.AuthenticationMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.contrib.auth.middleware.AuthenticationMiddleware</span></code></a>、および <a class=\"reference internal\" href=\"/ja/6.0/ref/middleware/#django.contrib.messages.middleware.MessageMiddleware\" title=\"django.contrib.messages.middleware.MessageMiddleware\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.contrib.messages.middleware.MessageMiddleware</span></code></a> を含める必要があります。</p></li>\n<li><p><a class=\"reference internal\" href=\"#hooking-adminsite-to-urlconf\"><span class=\"std std-ref\">管理サイトのURLをあなたのURLconfにフックする</span></a> 。</p></li>\n</ol>\n<p>これらのステップを踏んだ後、フックしたURL (デフォルトでは <code class=\"docutils literal notranslate\"><span class=\"pre\">/admin/</span></code>) を訪れることで、管理サイトを使用できるようになります。</p>\n<p>ログイン用のユーザーを作成する必要がある場合は、<a class=\"reference internal\" href=\"/ja/6.0/ref/django-admin/#django-admin-createsuperuser\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">createsuperuser</span></code></a> コマンドを使用してください。デフォルトでは、管理サイトにログインするにはユーザーの <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/auth/#django.contrib.auth.models.User.is_staff\" title=\"django.contrib.auth.models.User.is_staff\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">is_staff</span></code></a> 属性が <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> に設定されている必要があります。</p>\n<p>最後に、アプリケーションのモデルのうちどれが管理インターフェースで編集可能であるべきかを決定します。それらのモデルごとに、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code></a> に記述されているように、管理サイトに登録します。</p>\n<section id=\"other-topics\">\n<h3>他のトピック<a class=\"heading-anchor\" href=\"#other-topics\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<div class=\"toctree-wrapper compound\">\n<ul>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/admin/actions/\">管理アクション</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/admin/filters/\"><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> リストフィルタ</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/admin/admindocs/\">Django admin ドキュメントジェネレータ</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/admin/javascript/\">admin アプリケーションの JavaScript カスタマイズ</a></li>\n</ul>\n</div>\n<aside class=\"admonition admonition-seealso\">\n<p class=\"admonition-title\">参考</p>\n<p>本番環境での admin と関連する静的ファイル (画像、JavaScript、CSS) の配信について知りたい場合は、<a class=\"reference internal\" href=\"/ja/6.0/howto/deployment/wsgi/modwsgi/#serving-files\"><span class=\"std std-ref\">ファイルを配信する</span></a> を参照してください。</p>\n<p>問題が解決しない場合は、<a class=\"reference internal\" href=\"/ja/6.0/faq/admin/\"><span class=\"doc\">FAQ: 管理インタフェース</span></a> を参照してみてください。</p>\n</aside>\n</section>\n</section>\n<section id=\"modeladmin-objects\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> のオブジェクト<a class=\"heading-anchor\" href=\"#modeladmin-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">ModelAdmin</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> クラスは、admin インターフェース内でモデルを表現する方法です。通常、アプリケーション内の <code class=\"docutils literal notranslate\"><span class=\"pre\">admin.py</span></code> に記述されます。<code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> の例を見てみましょう:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">myapp.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Author</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">AuthorAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"k\">pass</span>\n\n\n<span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">register</span><span class=\"p\">(</span><span class=\"n\">Author</span><span class=\"p\">,</span> <span class=\"n\">AuthorAdmin</span><span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"admonition-do-you-need-a-modeladmin-object-at-all admonition\">\n<p class=\"admonition-title\">いつでも <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> オブジェクトが必要なのか?</p>\n<p>上記の例では、ModelAdminクラスはカスタム値を（まだ）定義していません。その結果、デフォルトの管理インターフェースが提供されます。デフォルトのadminインターフェースに満足している場合は、ModelAdminオブジェクトを定義する必要はまったくありません。ModelAdminの記述をせずにモデルクラスを登録できます。上記の例は、次のように簡略化できます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">myapp.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Author</span>\n\n<span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">register</span><span class=\"p\">(</span><span class=\"n\">Author</span><span class=\"p\">)</span>\n</code></pre></div>\n</aside>\n</dd></dl>\n\n<section id=\"the-register-decorator\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">register</span></code> デコレータ<a class=\"heading-anchor\" href=\"#the-register-decorator\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.register\">\n<span class=\"sig-name descname\"><span class=\"pre\">register</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">models</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">site</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">django.contrib.admin.sites.site</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.register\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> を登録するために、デレコータも用意されています:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Author</span>\n\n\n<span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">register</span><span class=\"p\">(</span><span class=\"n\">Author</span><span class=\"p\">)</span>\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">AuthorAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"k\">pass</span>\n</code></pre></div>\n<p>1 つ以上のモデルが与えられ、 <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> に登録されます。カスタムの <a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite\" title=\"django.contrib.admin.AdminSite\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code></a> を使用している場合、<code class=\"docutils literal notranslate\"><span class=\"pre\">site</span></code> キーワード引数を使って渡してください:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Author</span><span class=\"p\">,</span> <span class=\"n\">Editor</span><span class=\"p\">,</span> <span class=\"n\">Reader</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">myproject.admin_site</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">custom_admin_site</span>\n\n\n<span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">register</span><span class=\"p\">(</span><span class=\"n\">Author</span><span class=\"p\">,</span> <span class=\"n\">Reader</span><span class=\"p\">,</span> <span class=\"n\">Editor</span><span class=\"p\">,</span> <span class=\"n\">site</span><span class=\"o\">=</span><span class=\"n\">custom_admin_site</span><span class=\"p\">)</span>\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"k\">pass</span>\n</code></pre></div>\n<p>このデコレータは、model admin クラスをその <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__()</span></code> メソッド内で参照する必要がある場合（例： <code class=\"docutils literal notranslate\"><span class=\"pre\">super(PersonAdmin,</span> <span class=\"pre\">self).__init__(*args,</span> <span class=\"pre\">**kwargs)</span></code> ）には使用できません。代わりに <code class=\"docutils literal notranslate\"><span class=\"pre\">super().__init__(*args,</span> <span class=\"pre\">**kwargs)</span></code> のようにします。</p>\n</dd></dl>\n\n</section>\n<section id=\"discovery-of-admin-files\">\n<h3>admin ファイルを見つける<a class=\"heading-anchor\" href=\"#discovery-of-admin-files\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> 設定内に <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.admin'</span></code> を記述すると、Django は自動的に各アプリケーション内で <code class=\"docutils literal notranslate\"><span class=\"pre\">admin</span></code> モジュールを探してインポートします。</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.apps.AdminConfig\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">apps.</span></span><span class=\"sig-name descname\"><span class=\"pre\">AdminConfig</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.apps.AdminConfig\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>これは、admin に対するデフォルトの <a class=\"reference internal\" href=\"/ja/6.0/ref/applications/#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code></a> クラスです。Django が開始すると <a class=\"reference internal\" href=\"#django.contrib.admin.autodiscover\" title=\"django.contrib.admin.autodiscover\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">autodiscover()</span></code></a> を呼び出します。</p>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.apps.SimpleAdminConfig\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">apps.</span></span><span class=\"sig-name descname\"><span class=\"pre\">SimpleAdminConfig</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.apps.SimpleAdminConfig\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>このクラスは <a class=\"reference internal\" href=\"#django.contrib.admin.apps.AdminConfig\" title=\"django.contrib.admin.apps.AdminConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AdminConfig</span></code></a> と同じように動作しますが、<code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">autodiscover(()</span></code> を呼び出しません。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.apps.SimpleAdminConfig.default_site\">\n<span class=\"sig-name descname\"><span class=\"pre\">default_site</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.apps.SimpleAdminConfig.default_site\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>これはデフォルトの admin サイトのクラスやサイトインスタンスを返す呼び出し可能オブジェクトへのドット区切りのインポートパスです。デフォルトは <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.admin.sites.AdminSite'</span></code> です。使い方は <a class=\"reference internal\" href=\"#overriding-default-admin-site\"><span class=\"std std-ref\">デフォルトの admin サイトをオーバーライドする</span></a> を参照してください。</p>\n</dd></dl>\n\n</dd></dl>\n\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.autodiscover\">\n<span class=\"sig-name descname\"><span class=\"pre\">autodiscover</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.autodiscover\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>この関数は、インストールされた各アプリケーション内で <code class=\"docutils literal notranslate\"><span class=\"pre\">admin</span></code> モジュールをインポートするよう試みます。これらのモジュールは admin にモデルが登録されているものと想定されます。</p>\n<p>通常、この機能を手動で呼び出す必要はありません。Django が開始するとき <a class=\"reference internal\" href=\"#django.contrib.admin.apps.AdminConfig\" title=\"django.contrib.admin.apps.AdminConfig\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AdminConfig</span></code></a> が呼び出してくれます。</p>\n</dd></dl>\n\n<p>カスタム <code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code> を使用している場合、通常はすべての <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> サブクラスをコードにインポートし、それらをカスタム <code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code> に登録します。その場合、自動検出を無効にするには、<a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> 設定で <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.admin'</span></code> の代わりに <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.admin.apps.SimpleAdminConfig'</span></code> を指定する必要があります。</p>\n</section>\n<section id=\"modeladmin-options\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> のオプション<a class=\"heading-anchor\" href=\"#modeladmin-options\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> は非常に柔軟にできています。インターフェイスをカスタマイズするために、様々なオプションが用意されています。すべてのプションは <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> サブクラスで定義します:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">AuthorAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">date_hierarchy</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;pub_date&quot;</span>\n</code></pre></div>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.actions\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">actions</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.actions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>チェンジリストページで有効化するアクションのリストです。詳細は <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/admin/actions/\"><span class=\"doc\">管理アクション</span></a> を参照してください。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.actions_on_top\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">actions_on_top</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.actions_on_top\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.actions_on_bottom\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">actions_on_bottom</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.actions_on_bottom\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>ページ上のどこにアクションバーが表示されかをコントロールします。デフォルトでは、admin チェンジリストはページのトップにアクションを表示します (<code class=\"docutils literal notranslate\"><span class=\"pre\">actions_on_top</span> <span class=\"pre\">=</span> <span class=\"pre\">True;</span> <span class=\"pre\">actions_on_bottom</span> <span class=\"pre\">=</span> <span class=\"pre\">False</span></code>)。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.actions_selection_counter\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">actions_selection_counter</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.actions_selection_counter\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>アクションのドロップダウンの隣に選択用カウンターを表示するかどうかをコントロールします。デフォルトでは、admin チェンジリストは表示するようになっています (<code class=\"docutils literal notranslate\"><span class=\"pre\">actions_selection_counter</span> <span class=\"pre\">=</span> <span class=\"pre\">True</span></code>)。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.date_hierarchy\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">date_hierarchy</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.date_hierarchy\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">date_hierarchy</span></code> をモデル内の <code class=\"docutils literal notranslate\"><span class=\"pre\">DateField</span></code> か <code class=\"docutils literal notranslate\"><span class=\"pre\">DateTimeField</span></code> の名前にセットすると、チェンジリストのページがそのフィールドによる日付ベースのドリルダウンナビゲーションを含むようになります。</p>\n<p>実装例:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">date_hierarchy</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;pub_date&quot;</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">__</span></code> ルックアップを使用して、関連するモデルのフィールドを指定することもできます。たとえば:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">date_hierarchy</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;author__pub_date&quot;</span>\n</code></pre></div>\n<p>この機能は、有効なデータに基づいて、適切に変化させます。たとえば、すべての日付が 1 月に収まっている場合、日のドリルダウンのみを表示します。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">date_hierarchy</span></code> は内部的に <a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#django.db.models.query.QuerySet.datetimes\" title=\"django.db.models.query.QuerySet.datetimes\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">QuerySet.datetimes()</span></code></a> を使用します。タイムゾーンサポートが有効 (<a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">USE_TZ</span> <span class=\"pre\">=</span> <span class=\"pre\">True</span></code></a>) な際に注意すべき点について、ドキュメントを参照してください。</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.empty_value_display\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">empty_value_display</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.empty_value_display\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>この属性は、空(<code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>、空の文字列、等)のレコードのフィールドに対するデフォルトの表示値をオーバーライドします。デフォルト値は <code class=\"docutils literal notranslate\"><span class=\"pre\">-</span></code> (ダッシュ)です。たとえば:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">AuthorAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">empty_value_display</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;-empty-&quot;</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite.empty_value_display\" title=\"django.contrib.admin.AdminSite.empty_value_display\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">AdminSite.empty_value_display</span></code></a> ですべての admin ページもしくは特定のフィールドに対して <code class=\"docutils literal notranslate\"><span class=\"pre\">empty_value_display</span></code> をオーバーライドすることもできます:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">AuthorAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;title&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;view_birth_date&quot;</span><span class=\"p\">]</span>\n\n    <span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">display</span><span class=\"p\">(</span><span class=\"n\">empty_value</span><span class=\"o\">=</span><span class=\"s2\">&quot;???&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">view_birth_date</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"n\">obj</span><span class=\"o\">.</span><span class=\"n\">birth_date</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.exclude\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">exclude</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.exclude\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>この属性を使用する場合、フォームから除外するフィールドの名称をリストで指定します。</p>\n<p>たとえば、以下のモデルを考えてみましょう:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Author</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">100</span><span class=\"p\">)</span>\n    <span class=\"n\">title</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">3</span><span class=\"p\">)</span>\n    <span class=\"n\">birth_date</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">DateField</span><span class=\"p\">(</span><span class=\"n\">blank</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span> <span class=\"n\">null</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">Author</span></code> モデルに対するフォームが <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">title</span></code> の 2 つのフィールドのみを含むようにしたい場合、以下のように <code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code> か <code class=\"docutils literal notranslate\"><span class=\"pre\">exclude</span></code> を指定することになります:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">AuthorAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">fields</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;title&quot;</span><span class=\"p\">]</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">AuthorAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">exclude</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;birth_date&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>Author モデルが 3 つのフィールド (<code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">title</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">birth_date</span></code>) しか持っていないので、上記の宣言によって生成されるフォームはまったく同じフィールドを持つことになります。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.fields\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">fields</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.fields\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>&quot;add&quot; と &quot;change&quot; 上のフォームでシンプルなレイアウト変更 (有効なフィールドのみ表示、順序の変更、行のグルーピングなど) を行うには、<code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code> オプションを使用してください。たとえば、以下のように、<a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/flatpages/#django.contrib.flatpages.models.FlatPage\" title=\"django.contrib.flatpages.models.FlatPage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.contrib.flatpages.models.FlatPage</span></code></a> モデルに対して admin フォームのよりシンプルなバージョンを定義できます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">FlatPageAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">fields</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;url&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;title&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;content&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>上記の例では、指定したフィールド (<code class=\"docutils literal notranslate\"><span class=\"pre\">url</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">title</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">content</span></code>) だけが (結果として) フォーム上で表示されます。<code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code> は <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.readonly_fields\" title=\"django.contrib.admin.ModelAdmin.readonly_fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.readonly_fields</span></code></a> で定義される値を持つことができ、読み取り専用で表示されます。</p>\n<p>より複雑なレイアウトを作るには、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.fieldsets\" title=\"django.contrib.admin.ModelAdmin.fieldsets\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">fieldsets</span></code></a> オプションを参照してください。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code> オプションは、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.list_display\" title=\"django.contrib.admin.ModelAdmin.list_display\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">list_display</span></code></a> と同じタイプの値を受け付けますが、呼び出し可能オブジェクトや関連フィールドの <code class=\"docutils literal notranslate\"><span class=\"pre\">__</span></code> ルックアップは受け付けません。モデルおよびモデル管理クラスのメソッド名は、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.readonly_fields\" title=\"django.contrib.admin.ModelAdmin.readonly_fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">readonly_fields</span></code></a> にリストされている場合にのみ使用されます。</p>\n<p>1 つの行に複数のフィールドを表示するには、タプルで囲んでください。この例では、<code class=\"docutils literal notranslate\"><span class=\"pre\">url</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">title</span></code> フィールドが同じ行に表示され、<code class=\"docutils literal notranslate\"><span class=\"pre\">content</span></code> フィールドは次の行に表示されます:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">FlatPageAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">fields</span> <span class=\"o\">=</span> <span class=\"p\">[(</span><span class=\"s2\">&quot;url&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;title&quot;</span><span class=\"p\">),</span> <span class=\"s2\">&quot;content&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<aside class=\"admonition-possible-confusion-with-the-modeladmin-fieldsets-option admonition\">\n<p class=\"admonition-title\"><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin.fieldsets</span></code> オプションとの混同の可能性</p>\n<p>この <code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code> オプションと、次のセクションで説明する <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.fieldsets\" title=\"django.contrib.admin.ModelAdmin.fieldsets\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">fieldsets</span></code></a> における <code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code> ディクショナリキーは別物です。</p>\n</aside>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code> オプションも <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.fieldsets\" title=\"django.contrib.admin.ModelAdmin.fieldsets\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">fieldsets</span></code></a> オプションも指定されない場合、 Django はデフォルトで次のように表示します。 <code class=\"docutils literal notranslate\"><span class=\"pre\">AutoField</span></code> ではなく、かつ <code class=\"docutils literal notranslate\"><span class=\"pre\">editable=True</span></code> が設定されている各フィールドを、モデル内で定義された順序で単一のフィールドセットに表示します。その後に <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.readonly_fields\" title=\"django.contrib.admin.ModelAdmin.readonly_fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">readonly_fields</span></code></a> で定義されたフィールドを表示します。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.fieldsets\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">fieldsets</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.fieldsets\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin の &quot;add&quot; と &quot;change&quot; ページのレイアウトをコントロールするには、<code class=\"docutils literal notranslate\"><span class=\"pre\">fieldsets</span></code> をセットしてください。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">fieldsets</span></code> は、2 値タプルのリストで、各 2 値タプルは admin フォームページの <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;fieldset&gt;</span></code> を表します。 (<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;fieldset&gt;</span></code> はフォームの &quot;section&quot; です。)</p>\n<p>2 値タプルのフォーマットは <code class=\"docutils literal notranslate\"><span class=\"pre\">(name,</span> <span class=\"pre\">field_options)</span></code> で、<code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> はフィールドセットのタイトル文字列を表し、<code class=\"docutils literal notranslate\"><span class=\"pre\">field_options</span></code> フィールドセットに関する情報のディクショナリで、表示するフィールドのリストを含みます。</p>\n<p><a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/flatpages/#django.contrib.flatpages.models.FlatPage\" title=\"django.contrib.flatpages.models.FlatPage\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.contrib.flatpages.models.FlatPage</span></code></a> モデルを用いた例は以下のようになります。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">FlatPageAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">fieldsets</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n        <span class=\"p\">(</span>\n            <span class=\"kc\">None</span><span class=\"p\">,</span>\n            <span class=\"p\">{</span>\n                <span class=\"s2\">&quot;fields&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;url&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;title&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;content&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;sites&quot;</span><span class=\"p\">],</span>\n            <span class=\"p\">},</span>\n        <span class=\"p\">),</span>\n        <span class=\"p\">(</span>\n            <span class=\"s2\">&quot;Advanced options&quot;</span><span class=\"p\">,</span>\n            <span class=\"p\">{</span>\n                <span class=\"s2\">&quot;classes&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;collapse&quot;</span><span class=\"p\">],</span>\n                <span class=\"s2\">&quot;fields&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;registration_required&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;template_name&quot;</span><span class=\"p\">],</span>\n            <span class=\"p\">},</span>\n        <span class=\"p\">),</span>\n    <span class=\"p\">]</span>\n</code></pre></div>\n<p>これにより、admin ページは以下のような見た目となります:</p>\n<img alt=\"/ja/6.0/_images/fieldsets.png\" src=\"/ja/6.0/_images/fieldsets.png\" />\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">fieldsets</span></code> と <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.fields\" title=\"django.contrib.admin.ModelAdmin.fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">fields</span></code></a> オプションのどちらも存在しない場合、Django はデフォルトで <code class=\"docutils literal notranslate\"><span class=\"pre\">AutoField</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">editable=True</span></code> 以外の各フィールドを、単一のフィールドセットで、モデル内でフィールドが定義されたとおりの順番で表示します。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">field_options</span></code> ディクショナリは以下のキーを持つことができます:</p>\n<ul>\n<li><dl>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code></dt><dd><p>フィールドセット内に表示するフィールド名のリストまたはタプルです。このキーは必須です。</p>\n<p>実装例:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"p\">{</span>\n    <span class=\"s2\">&quot;fields&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;last_name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;address&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;city&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;state&quot;</span><span class=\"p\">],</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.fields\" title=\"django.contrib.admin.ModelAdmin.fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">fields</span></code></a> オプションと同様に、複数のフィールドを 1 行に表示するにはタプルでこれらのフィールドを囲んでください。この例では、<code class=\"docutils literal notranslate\"><span class=\"pre\">first_name</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">last_name</span></code> フィールドが 1 つの行に表示されます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"p\">{</span>\n    <span class=\"s2\">&quot;fields&quot;</span><span class=\"p\">:</span> <span class=\"p\">[(</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;last_name&quot;</span><span class=\"p\">),</span> <span class=\"s2\">&quot;address&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;city&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;state&quot;</span><span class=\"p\">],</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code> は <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.readonly_fields\" title=\"django.contrib.admin.ModelAdmin.readonly_fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.readonly_fields</span></code></a> で定義される値を持つことができ、読み取り専用で表示されます。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code> に呼び出し可能オブジェクトの名前を追加した場合、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.fields\" title=\"django.contrib.admin.ModelAdmin.fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">fields</span></code></a> オプションと同じルールが適用されます: 呼び出し可能オブジェクトは <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.readonly_fields\" title=\"django.contrib.admin.ModelAdmin.readonly_fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">readonly_fields</span></code></a> 内でリスト化される必要があります。</p>\n</dd>\n</dl>\n</li>\n<li><dl>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">classes</span></code></dt><dd><p>フィールドセットに適用する追加のCSSクラスを含むリストまたはタプルです。これには、プロジェクト内で定義されたカスタムCSSクラスや、Djangoが提供するCSSクラスを含めることができます。デフォルトの管理サイトのCSSスタイルシート内では、特に役立つ2つのクラス、<code class=\"docutils literal notranslate\"><span class=\"pre\">collapse</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">wide</span></code> が定義されています。</p>\n<p>実装例:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"p\">{</span>\n    <span class=\"s2\">&quot;classes&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;wide&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;collapse&quot;</span><span class=\"p\">],</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">wide</span></code> スタイルが適用されたフィールドセットは、管理インターフェースで追加の横幅が与えられます。<code class=\"docutils literal notranslate\"><span class=\"pre\">collapse</span></code> スタイルが適用された名前付きフィールドセットは、初期状態で折りたたまれ、表示/非表示を切り替えるための展開可能なウィジェットが使用されます。</p>\n</dd>\n</dl>\n</li>\n<li><dl>\n<dt><code class=\"docutils literal notranslate\"><span class=\"pre\">description</span></code></dt><dd><p>各フィールドセットの見出しの下に表示されるオプションの追加テキストの文字列です。</p>\n<p>この値は、管理インターフェイスに表示されるときにはHTMLエスケープされないことに注意してください。これにより、HTML を含めることができます。あるいは、プレーンテキストと <a class=\"reference internal\" href=\"/ja/6.0/ref/utils/#django.utils.html.escape\" title=\"django.utils.html.escape\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.utils.html.escape()</span></code></a> を使って HTML の特殊文字をエスケープすることもできます。</p>\n</dd>\n</dl>\n</li>\n</ul>\n<aside class=\"admonition-class-django-contrib-admin-tabularinline-has-limited-support-for-fieldsets admonition\">\n<p class=\"admonition-title\"><a class=\"reference internal\" href=\"#django.contrib.admin.TabularInline\" title=\"django.contrib.admin.TabularInline\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TabularInline</span></code></a> は <code class=\"docutils literal notranslate\"><span class=\"pre\">fieldsets</span></code> の機能の一部しか利用できません</p>\n<p><a class=\"reference internal\" href=\"#django.contrib.admin.TabularInline\" title=\"django.contrib.admin.TabularInline\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TabularInline</span></code></a> で <code class=\"docutils literal notranslate\"><span class=\"pre\">fieldsets</span></code> を使用する際は、機能が制限されています。<code class=\"docutils literal notranslate\"><span class=\"pre\">TabularInline</span></code> レイアウト内で表示するフィールドとその順序を指定するには、<code class=\"docutils literal notranslate\"><span class=\"pre\">field_options</span></code> 辞書内で <code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code> を定義する必要があります。</p>\n<p>その他のすべての機能はサポートされていません。これには、フィールドのグループにタイトルを定義するための <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> の使用が含まれます。</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.filter_horizontal\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">filter_horizontal</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.filter_horizontal\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>デフォルトでは、<a class=\"reference internal\" href=\"/ja/6.0/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code></a> は <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;select</span> <span class=\"pre\">multiple&gt;</span></code> で admin サイトで表示されます。複数選択のボックスは、たくさんのアイテムを選択するには不向きです。<a class=\"reference internal\" href=\"/ja/6.0/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code></a> をこのリストに加えると、代わりにかっこよくて控えめな JavaScript の &quot;filter&quot; インターフェースを使用します。非選択および選択済みのオプションは 2 つのボックスに並べて表示されます。垂直方向のインターフェースを使用するには <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.filter_vertical\" title=\"django.contrib.admin.ModelAdmin.filter_vertical\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">filter_vertical</span></code></a> を参照してください。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.filter_vertical\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">filter_vertical</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.filter_vertical\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.filter_horizontal\" title=\"django.contrib.admin.ModelAdmin.filter_horizontal\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">filter_horizontal</span></code></a> と同じですが、フィルタインターフェイスを垂直方向に表示し、非選択のオプションは選択済みのオプションの上部に表示されます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.form\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">form</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.form\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>デフォルトではモデルに対して <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code> が動的に生成されます。追加と変更の両方のページで使用されるフォームです。独自の <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code> を定義すれば、追加と変更のページでフォームの挙動を簡単にオーバーライドできます。あるいは、まったく新しいモデルフォームを作る代わりに、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.get_form\" title=\"django.contrib.admin.ModelAdmin.get_form\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">ModelAdmin.get_form()</span></code></a> メソッドを使ってデフォルトのフォームをカスタムすることもできます。</p>\n<p>例については <a class=\"reference internal\" href=\"#admin-custom-validation\"><span class=\"std std-ref\">カスタムのバリデーションを admin に追加する</span></a> を参照してください。</p>\n<aside class=\"admonition-omit-the-meta-model-attribute admonition\">\n<p class=\"admonition-title\"><code class=\"docutils literal notranslate\"><span class=\"pre\">Meta.model</span></code> 属性を省略する</p>\n<p><a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code></a> で <code class=\"docutils literal notranslate\"><span class=\"pre\">Meta.model</span></code> 属性を定義した場合、<code class=\"docutils literal notranslate\"><span class=\"pre\">Meta.fields</span></code> 属性 (もしくは <code class=\"docutils literal notranslate\"><span class=\"pre\">Meta.exclude</span></code> 属性) も定義する必要があります。しかし、admin 自身がフィールドを定義する方法を持っているため、<code class=\"docutils literal notranslate\"><span class=\"pre\">Meta.fields</span></code> 属性は無視されます。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code> を admin のみで使用する場合は、<code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> が使用する正しいモデルを提供するため、<code class=\"docutils literal notranslate\"><span class=\"pre\">Meta.model</span></code> 属性を省略するのが手っ取り早い解決法です。あるいは、<code class=\"docutils literal notranslate\"><span class=\"pre\">Meta</span></code> クラス内で <code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span> <span class=\"pre\">=</span> <span class=\"pre\">[]</span></code> をセットして <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code> のバリデーションの条件を満たすこともできます。</p>\n</aside>\n<aside class=\"admonition-modeladmin-exclude-takes-precedence admonition\">\n<p class=\"admonition-title\"><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin.exclude</span></code> が優先されます</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> の両方で <code class=\"docutils literal notranslate\"><span class=\"pre\">exclude</span></code> オプションが定義されている場合、<code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> は優先順位に従います。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">forms</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">myapp.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Person</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonForm</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">ModelForm</span><span class=\"p\">):</span>\n    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Meta</span><span class=\"p\">:</span>\n        <span class=\"n\">model</span> <span class=\"o\">=</span> <span class=\"n\">Person</span>\n        <span class=\"n\">exclude</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">]</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">exclude</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;age&quot;</span><span class=\"p\">]</span>\n    <span class=\"n\">form</span> <span class=\"o\">=</span> <span class=\"n\">PersonForm</span>\n</code></pre></div>\n<p>この例では、生成されるフォームで &quot;age&quot; フィールドは除外されますが &quot;name&quot; フィールドは含まれます。</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.formfield_overrides\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">formfield_overrides</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.formfield_overrides\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin 内で使用するための <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/fields/#django.forms.Field\" title=\"django.forms.Field\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Field</span></code></a> のうちある程度の部分をオーバーライドする簡単 (だけど汚い) 方法を提供します。<code class=\"docutils literal notranslate\"><span class=\"pre\">formfield_overrides</span></code> はディクショナリで、フィールドクラスの構成時にフィールドに渡す引数のディクショナリをマッピングします。</p>\n<p>これでは抽象的すぎるので、具体的な例を見てみましょう。<code class=\"docutils literal notranslate\"><span class=\"pre\">formfield_overrides</span></code> のもっとも一般的な使い道は、特定のタイプのフィールドに対してカスタムしたウィジェットを追加することです。大きなテキストフィールドを使用するために、デフォルトの <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;textarea&gt;</span></code> の代わりに <code class=\"docutils literal notranslate\"><span class=\"pre\">RichTextEditorWidget</span></code> を使いたいとしましょう。この場合、以下のように記述します。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n<span class=\"c1\"># Import our custom widget and our model from where they&#39;re defined</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">myapp.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">MyModel</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">myapp.widgets</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">RichTextEditorWidget</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyModelAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">formfield_overrides</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n        <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">TextField</span><span class=\"p\">:</span> <span class=\"p\">{</span><span class=\"s2\">&quot;widget&quot;</span><span class=\"p\">:</span> <span class=\"n\">RichTextEditorWidget</span><span class=\"p\">},</span>\n    <span class=\"p\">}</span>\n</code></pre></div>\n<p>ディクショナリ内のキーは文字列 <em>ではなく</em> 実際のフィールドクラスである点に注意してください。値は別のディクショナリです; これらの引数はフォームフィールドの <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__()</span></code> メソッドに渡されます。詳細は <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/api/\"><span class=\"doc\">フォーム API</span></a> を参照してください。</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">警告</p>\n<p>リレーションフィールド (例えば <a class=\"reference internal\" href=\"/ja/6.0/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code></a> や <a class=\"reference internal\" href=\"/ja/6.0/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code></a>) でカスタムウィジェットを使用したいときは、,  <code class=\"docutils literal notranslate\"><span class=\"pre\">raw_id_fields</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">radio_fields</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">autocomplete_fields</span></code> にそのフィールドの名前を含まないようにしてください。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">formfield_overrides</span></code> は、<code class=\"docutils literal notranslate\"><span class=\"pre\">raw_id_fields</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">radio_fields</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">autocomplete_fields</span></code> のどれかがセットされたリレーションフィールドのウィジェットは変更しません。これは、<code class=\"docutils literal notranslate\"><span class=\"pre\">raw_id_fields</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">radio_fields</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">autocomplete_fields</span></code> の 3 つがこれら自身のカスタムウィジェットを暗示するからです。</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.inlines\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">inlines</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.inlines\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>後述の <a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin\" title=\"django.contrib.admin.InlineModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin</span></code></a> オブジェクトと <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.get_formsets_with_inlines\" title=\"django.contrib.admin.ModelAdmin.get_formsets_with_inlines\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">ModelAdmin.get_formsets_with_inlines()</span></code></a> を参照してください。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.list_display\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">list_display</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.list_display\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin のチェンジリストページでどのフィールドを表示するかコントロールするために、<code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code> をセットします。</p>\n<p>実装例:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;last_name&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code> をセットしない場合、admin サイトは各オブジェクトの <code class=\"docutils literal notranslate\"><span class=\"pre\">__str__()</span></code> 表現を表示する単一の列を表示します。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code> で使用できる値は5種類あります。最も簡単なもの以外は、フィールドの表示方法をカスタマイズするために <a class=\"reference internal\" href=\"#django.contrib.admin.display\" title=\"django.contrib.admin.display\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">display()</span></code></a> デコレーターを使用できます。</p>\n<ul>\n<li><p>モデルフィールドの名前。次に例を示します。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;last_name&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p>リレーション先フィールドの名前を <code class=\"docutils literal notranslate\"><span class=\"pre\">__</span></code> 表記で記述します。例えば、次のようにします。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;city__name&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p>1 つの引数 (モデルのインスタンス) を受け入れる呼び出し可能オブジェクトです。次に例を示します。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">display</span><span class=\"p\">(</span><span class=\"n\">description</span><span class=\"o\">=</span><span class=\"s2\">&quot;Name&quot;</span><span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">upper_case_name</span><span class=\"p\">(</span><span class=\"n\">obj</span><span class=\"p\">):</span>\n    <span class=\"k\">return</span> <span class=\"sa\">f</span><span class=\"s2\">&quot;</span><span class=\"si\">{</span><span class=\"n\">obj</span><span class=\"o\">.</span><span class=\"n\">first_name</span><span class=\"si\">}</span><span class=\"s2\"> </span><span class=\"si\">{</span><span class=\"n\">obj</span><span class=\"o\">.</span><span class=\"n\">last_name</span><span class=\"si\">}</span><span class=\"s2\">&quot;</span><span class=\"o\">.</span><span class=\"n\">upper</span><span class=\"p\">()</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"n\">upper_case_name</span><span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p>1 つの引数 (モデルのインスタンス) を受け入れる <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> メソッドを表す文字列です。次に例を示します。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;upper_case_name&quot;</span><span class=\"p\">]</span>\n\n    <span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">display</span><span class=\"p\">(</span><span class=\"n\">description</span><span class=\"o\">=</span><span class=\"s2\">&quot;Name&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">upper_case_name</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"sa\">f</span><span class=\"s2\">&quot;</span><span class=\"si\">{</span><span class=\"n\">obj</span><span class=\"o\">.</span><span class=\"n\">first_name</span><span class=\"si\">}</span><span class=\"s2\"> </span><span class=\"si\">{</span><span class=\"n\">obj</span><span class=\"o\">.</span><span class=\"n\">last_name</span><span class=\"si\">}</span><span class=\"s2\">&quot;</span><span class=\"o\">.</span><span class=\"n\">upper</span><span class=\"p\">()</span>\n</code></pre></div>\n</li>\n<li><p>モデルの属性や (必須の引数を持たない) メソッドを表す文字列です。次に例を示します。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Person</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n    <span class=\"n\">birthday</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">DateField</span><span class=\"p\">()</span>\n\n    <span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">display</span><span class=\"p\">(</span><span class=\"n\">description</span><span class=\"o\">=</span><span class=\"s2\">&quot;Birth decade&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">decade_born_in</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"n\">decade</span> <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">birthday</span><span class=\"o\">.</span><span class=\"n\">year</span> <span class=\"o\">//</span> <span class=\"mi\">10</span> <span class=\"o\">*</span> <span class=\"mi\">10</span>\n        <span class=\"k\">return</span> <span class=\"sa\">f</span><span class=\"s2\">&quot;</span><span class=\"si\">{</span><span class=\"n\">decade</span><span class=\"si\">}</span><span class=\"s2\">’s&quot;</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;decade_born_in&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n</li>\n</ul>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code> に関する特殊な状況の注意点があります。</p>\n<ul>\n<li><p>フィールドが <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> の場合、 Django はリレーション先オブジェクトの <code class=\"docutils literal notranslate\"><span class=\"pre\">__str__()</span></code> を表示します。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> フィールドは、テーブル内で各行に対して個別の SQL ステートメントを実行する可能性があるため、サポートされていません。それでも使いたい場合は、モデルにカスタムメソッドを作成し、そのメソッドの名前を <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code> に追加してください。 (<code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code> 内でのカスタムメソッドについてより詳しくは下記を参照してください。)</p></li>\n<li><p>フィールドが <code class=\"docutils literal notranslate\"><span class=\"pre\">BooleanField</span></code> の場合、Django は <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> の代わりに、かわいい &quot;yes&quot;, &quot;no&quot;, &quot;unknown&quot; アイコンを表示します。</p></li>\n<li><p>与えられた文字列がモデル、<code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code>、呼び出し可能オブジェクトのどれかの場合、Django はデフォルトで HTML エスケープして出力します。ユーザーの入力をエスケープしたり非エスケープのタグを使う場合、<a class=\"reference internal\" href=\"/ja/6.0/ref/utils/#django.utils.html.format_html\" title=\"django.utils.html.format_html\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">format_html()</span></code></a> を使用してください。</p>\n<p>以下は、モデルの例です。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils.html</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">format_html</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Person</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">first_name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n    <span class=\"n\">last_name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n    <span class=\"n\">color_code</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">6</span><span class=\"p\">)</span>\n\n    <span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">display</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">colored_name</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"n\">format_html</span><span class=\"p\">(</span>\n            <span class=\"s1\">&#39;&lt;span style=&quot;color: #</span><span class=\"si\">{}</span><span class=\"s1\">;&quot;&gt;</span><span class=\"si\">{}</span><span class=\"s1\"> </span><span class=\"si\">{}</span><span class=\"s1\">&lt;/span&gt;&#39;</span><span class=\"p\">,</span>\n            <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">color_code</span><span class=\"p\">,</span>\n            <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">first_name</span><span class=\"p\">,</span>\n            <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">last_name</span><span class=\"p\">,</span>\n        <span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;last_name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;colored_name&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p>これまでの例で見てきたように、呼び出し可能オブジェクト、モデルメソッド、または <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> メソッドを使用する場合、 <a class=\"reference internal\" href=\"#django.contrib.admin.display\" title=\"django.contrib.admin.display\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">display()</span></code></a> デコレータで呼び出し可能オブジェクトをラップし、 <code class=\"docutils literal notranslate\"><span class=\"pre\">description</span></code> 引数を渡すことで、カラムのタイトルをカスタマイズできます。</p></li>\n<li><p>フィールドの値が <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>、空の文字列、エレメントを持たない iterable のいずれかの場合、Django は <code class=\"docutils literal notranslate\"><span class=\"pre\">-</span></code> (ダッシュ) を表示します。この挙動は <a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite.empty_value_display\" title=\"django.contrib.admin.AdminSite.empty_value_display\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">AdminSite.empty_value_display</span></code></a> でオーバーライドできます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n\n<span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">empty_value_display</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;(None)&quot;</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.empty_value_display\" title=\"django.contrib.admin.ModelAdmin.empty_value_display\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.empty_value_display</span></code></a> も使用できます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">empty_value_display</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;unknown&quot;</span>\n</code></pre></div>\n<p>もしくは、フィールドレベルで以下のようにできます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;birth_date_view&quot;</span><span class=\"p\">]</span>\n\n    <span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">display</span><span class=\"p\">(</span><span class=\"n\">empty_value</span><span class=\"o\">=</span><span class=\"s2\">&quot;unknown&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">birth_date_view</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"n\">obj</span><span class=\"o\">.</span><span class=\"n\">birth_date</span>\n</code></pre></div>\n</li>\n<li><p>与えられた文字列がモデル <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> のメソッドか、 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> を返す呼び出し可能オブジェクトの場合、 Django はそのメソッドを <a class=\"reference internal\" href=\"#django.contrib.admin.display\" title=\"django.contrib.admin.display\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">display()</span></code></a> デコレータでラップし、 <code class=\"docutils literal notranslate\"><span class=\"pre\">boolean</span></code> 引数を <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> で渡すと、かわいい &quot;yes&quot;, &quot;no&quot;, &quot;unknown&quot; アイコンを表示します。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Person</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">first_name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n    <span class=\"n\">birthday</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">DateField</span><span class=\"p\">()</span>\n\n    <span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">display</span><span class=\"p\">(</span><span class=\"n\">boolean</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">born_in_fifties</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"mi\">1950</span> <span class=\"o\">&lt;=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">birthday</span><span class=\"o\">.</span><span class=\"n\">year</span> <span class=\"o\">&lt;</span> <span class=\"mi\">1960</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;born_in_fifties&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">__str__()</span></code> メソッドは、他のモデルメソッドとまったく同様に <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code> 内でも有効です。つまり、以下のような書き方は完璧に OK です。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;__str__&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;some_other_field&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p>通常、実際のデータベースフィールドではない <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code> の要素は、ソートに使用できません (Django のソートはすべてデータベースレベルで実行されるためです)。</p>\n<p>しかし、<code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code> の要素が特定のデータベースフィールドを表す場合、メソッドに <a class=\"reference internal\" href=\"#django.contrib.admin.display\" title=\"django.contrib.admin.display\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">display()</span></code></a> デコレータを使用し、 <code class=\"docutils literal notranslate\"><span class=\"pre\">ordering</span></code> 引数を渡すことで、その事実を伝えることができます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils.html</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">format_html</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Person</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">first_name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n    <span class=\"n\">color_code</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">6</span><span class=\"p\">)</span>\n\n    <span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">display</span><span class=\"p\">(</span><span class=\"n\">ordering</span><span class=\"o\">=</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">colored_first_name</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"n\">format_html</span><span class=\"p\">(</span>\n            <span class=\"s1\">&#39;&lt;span style=&quot;color: #</span><span class=\"si\">{}</span><span class=\"s1\">;&quot;&gt;</span><span class=\"si\">{}</span><span class=\"s1\">&lt;/span&gt;&#39;</span><span class=\"p\">,</span>\n            <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">color_code</span><span class=\"p\">,</span>\n            <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">first_name</span><span class=\"p\">,</span>\n        <span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;colored_first_name&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>上記のコードは、admin 内で <code class=\"docutils literal notranslate\"><span class=\"pre\">colored_first_name</span></code> で ソートしようとするとき、<code class=\"docutils literal notranslate\"><span class=\"pre\">first_name</span></code> フィールドで並べ替えるよう Django に伝えます。</p>\n<p>引数 <code class=\"docutils literal notranslate\"><span class=\"pre\">ordering</span></code> で降順を示すには、フィールド名の前にハイフンをつけます。上記の例を使うと、次のようになります。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">display</span><span class=\"p\">(</span><span class=\"n\">ordering</span><span class=\"o\">=</span><span class=\"s2\">&quot;-first_name&quot;</span><span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">colored_first_name</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n<p>引数 <code class=\"docutils literal notranslate\"><span class=\"pre\">Lordering</span></code> はリレーション先モデルの値でソートするクエリのルックアップをサポートします。この例では、&quot;author first name&quot; カラムをリストに表示し、first name でソートできるようにしています。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Blog</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">title</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">255</span><span class=\"p\">)</span>\n    <span class=\"n\">author</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ForeignKey</span><span class=\"p\">(</span><span class=\"n\">Person</span><span class=\"p\">,</span> <span class=\"n\">on_delete</span><span class=\"o\">=</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CASCADE</span><span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">BlogAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;title&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;author&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;author_first_name&quot;</span><span class=\"p\">]</span>\n\n    <span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">display</span><span class=\"p\">(</span><span class=\"n\">ordering</span><span class=\"o\">=</span><span class=\"s2\">&quot;author__first_name&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">author_first_name</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"n\">obj</span><span class=\"o\">.</span><span class=\"n\">author</span><span class=\"o\">.</span><span class=\"n\">first_name</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"/ja/6.0/ref/models/expressions/\"><span class=\"doc\">クエリ式</span></a> は <code class=\"docutils literal notranslate\"><span class=\"pre\">ordering</span></code> 引数と一緒に使うことができます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Value</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db.models.functions</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Concat</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Person</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">first_name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n    <span class=\"n\">last_name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n\n    <span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">display</span><span class=\"p\">(</span><span class=\"n\">ordering</span><span class=\"o\">=</span><span class=\"n\">Concat</span><span class=\"p\">(</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">,</span> <span class=\"n\">Value</span><span class=\"p\">(</span><span class=\"s2\">&quot; &quot;</span><span class=\"p\">),</span> <span class=\"s2\">&quot;last_name&quot;</span><span class=\"p\">))</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">full_name</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">first_name</span> <span class=\"o\">+</span> <span class=\"s2\">&quot; &quot;</span> <span class=\"o\">+</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">last_name</span>\n</code></pre></div>\n</li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code> の要素はプロパティにすることもできます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Person</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">first_name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n    <span class=\"n\">last_name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n\n    <span class=\"nd\">@property</span>\n    <span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">display</span><span class=\"p\">(</span>\n        <span class=\"n\">ordering</span><span class=\"o\">=</span><span class=\"s2\">&quot;last_name&quot;</span><span class=\"p\">,</span>\n        <span class=\"n\">description</span><span class=\"o\">=</span><span class=\"s2\">&quot;Full name of the person&quot;</span><span class=\"p\">,</span>\n        <span class=\"n\">boolean</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">,</span>\n    <span class=\"p\">)</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">full_name</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">first_name</span> <span class=\"o\">+</span> <span class=\"s2\">&quot; &quot;</span> <span class=\"o\">+</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">last_name</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;full_name&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>ただし、<code class=\"docutils literal notranslate\"><span class=\"pre\">&#64;property</span></code> は <code class=\"docutils literal notranslate\"><span class=\"pre\">&#64;display</span></code> より上でなければなりません。<a class=\"reference internal\" href=\"#django.contrib.admin.display\" title=\"django.contrib.admin.display\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">display()</span></code></a> デコレータを使用するのではなく、直接表示関連の属性を設定する古い方法を使用している場合は、<code class=\"docutils literal notranslate\"><span class=\"pre\">&#64;property</span></code> デコレータではなく、<code class=\"docutils literal notranslate\"><span class=\"pre\">property()</span></code> 関数を使用しなければならないことに注意してください。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_property</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n    <span class=\"k\">return</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">first_name</span> <span class=\"o\">+</span> <span class=\"s2\">&quot; &quot;</span> <span class=\"o\">+</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">last_name</span>\n\n\n<span class=\"n\">my_property</span><span class=\"o\">.</span><span class=\"n\">short_description</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;Full name of the person&quot;</span>\n<span class=\"n\">my_property</span><span class=\"o\">.</span><span class=\"n\">admin_order_field</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;last_name&quot;</span>\n<span class=\"n\">my_property</span><span class=\"o\">.</span><span class=\"n\">boolean</span> <span class=\"o\">=</span> <span class=\"kc\">False</span>\n\n<span class=\"n\">full_name</span> <span class=\"o\">=</span> <span class=\"nb\">property</span><span class=\"p\">(</span><span class=\"n\">my_property</span><span class=\"p\">)</span>\n</code></pre></div>\n</li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code> のフィールド名はHTMLの出力でも <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;th&gt;</span></code> 要素に <code class=\"docutils literal notranslate\"><span class=\"pre\">column-&lt;field_name&gt;</span></code> という形でCSSクラスとして表示されます。これは例えばCSSファイルでカラムの幅を設定するのに使うことができます。</p></li>\n<li><p>Django は、<code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code> の各要素を以下の順番で解釈しようとします。</p>\n<ul class=\"simple\">\n<li><p>モデルのフィールド、またはリレーション先のフィールド由来のフィールド。</p></li>\n<li><p>呼び出し可能オブジェクト。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> 属性を表す文字列。</p></li>\n<li><p>モデル属性を表す文字列。</p></li>\n</ul>\n<p>たとえば、<code class=\"docutils literal notranslate\"><span class=\"pre\">first_name</span></code> がモデルフィールドと <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> 属性の両方で存在する場合、モデルフィールドの方が使用されます。</p>\n</li>\n</ul>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.list_display_links\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">list_display_links</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.list_display_links\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.list_display\" title=\"django.contrib.admin.ModelAdmin.list_display\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">list_display</span></code></a> 内のフィールドにおいて &quot;変更&quot; ページへのリンクをコントロールするには、<code class=\"docutils literal notranslate\"><span class=\"pre\">list_display_links</span></code> を使用してください。</p>\n<p>デフォルトでは、チェンジリストページは最初のカラム (<code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code> で最初に指定したフィールド) に各アイテムの変更ページへのリンクが貼られています。しかし、<code class=\"docutils literal notranslate\"><span class=\"pre\">list_display_links</span></code> を使って変更できます。</p>\n<ul>\n<li><p>リンクを貼らない場合は <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> をセットしてください。</p></li>\n<li><p>(<code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code> と同様のフォーマットで) リンクに変換したいカラムのフィールドのリストないしタプルをセットしてください。</p>\n<p>1 つないし複数のフィールドを指定できます。<code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code> にある限り、Django はいくつのフィールドがリンクになろうと気にしません。唯一の要件は、<code class=\"docutils literal notranslate\"><span class=\"pre\">list_display_links</span></code> をこの方式で使いたいときは <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code> を指定することです。</p>\n</li>\n</ul>\n<p>以下の例では、<code class=\"docutils literal notranslate\"><span class=\"pre\">first_name</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">last_name</span></code> フィールドがチェンジリストページでリンクされます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;last_name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;birthday&quot;</span><span class=\"p\">]</span>\n    <span class=\"n\">list_display_links</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;last_name&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>以下の例では、チェンジリストページのグリッドにはリンクがなくなります。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">AuditEntryAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;timestamp&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;message&quot;</span><span class=\"p\">]</span>\n    <span class=\"n\">list_display_links</span> <span class=\"o\">=</span> <span class=\"kc\">None</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py attribute\" id=\"admin-list-editable\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.list_editable\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">list_editable</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.list_editable\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>チェンジリストページ上での編集を有効にしたいモデルのフィールド名のリストを <code class=\"docutils literal notranslate\"><span class=\"pre\">list_editable</span></code> にセットしてください。<code class=\"docutils literal notranslate\"><span class=\"pre\">list_editable</span></code> に指定されたフィールドは、チェンジリストページ上でフォームウィジェットとして表示され、ユーザーは複数の行を一度に編集して保存できます。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">list_editable</span></code> は、他のオプションと特定部分で相互関係にあります。以下のルールに注意してください。</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">list_editable</span></code> 内のすべてのフィールドは <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code> に含まれている必要があります。表示されていないフィールドは編集できないのです！</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">list_editable</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display_links</span></code> に同じフィールドを同時に指定することはできません -- 1 つのフィールドがフォームとリンクの両方になることはできないからです。</p></li>\n</ul>\n<p>これらのルールを破った場合、バリデーションエラーとなります。</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.list_filter\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">list_filter</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.list_filter\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin のチェンジリストページの右サイドバーのフィルタを有効化するには、<code class=\"docutils literal notranslate\"><span class=\"pre\">list_filter</span></code> をセットしてください。</p>\n<p>最もシンプルな <code class=\"docutils literal notranslate\"><span class=\"pre\">list_filter</span></code> はフィルタリングを有効にするフィールド名のリストまたはタプルを受け取りますが、より高度なオプションもいくつか用意されています。詳細は <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/admin/filters/#modeladmin-list-filters\"><span class=\"std std-ref\">ModelAdmin リストフィルタ</span></a> を参照してください。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.list_max_show_all\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">list_max_show_all</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.list_max_show_all\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>&quot;Show all&quot; の admin チェンジリストページで表示するアイテム数をコントロールするには、<code class=\"docutils literal notranslate\"><span class=\"pre\">list_max_show_all</span></code> をセットしてください。チェンジリストページの &quot;Show all&quot; リンクは、この設定値以下の場合のみ表示されます。デフォルトでは <code class=\"docutils literal notranslate\"><span class=\"pre\">200</span></code> にセットされています。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.list_per_page\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">list_per_page</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.list_per_page\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>ページ分割された admin のチェンジリストページに表示するアイテム数をコントロールするには、<code class=\"docutils literal notranslate\"><span class=\"pre\">list_per_page</span></code> をセットしてください。デフォルトでは <code class=\"docutils literal notranslate\"><span class=\"pre\">100</span></code> にセットされています。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.list_select_related\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">list_select_related</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.list_select_related\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin のチェンジリストページでオブジェクトのリストを検索するときに <a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#django.db.models.query.QuerySet.select_related\" title=\"django.db.models.query.QuerySet.select_related\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">select_related()</span></code></a> を使用するよう Django に伝えるには、<code class=\"docutils literal notranslate\"><span class=\"pre\">list_select_related</span></code> をセットしてください。これにより多くのデータベースクエリを削減できます。</p>\n<p>値は真偽値、リスト、タプルのどれかでなければなりません。デフォルトは <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> です。</p>\n<p>値が <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> のとき、常に <code class=\"docutils literal notranslate\"><span class=\"pre\">select_related()</span></code> が呼ばれます。<code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> のときは、<code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> が存在する場合 Django は <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code> を参照して <code class=\"docutils literal notranslate\"><span class=\"pre\">select_related()</span></code> を呼び出します。</p>\n<p>よりきめ細やかにコントロールする場合は、<code class=\"docutils literal notranslate\"><span class=\"pre\">list_select_related</span></code> の値にタプル (ないしリスト) を使用してください。空のタプルは、Django が <code class=\"docutils literal notranslate\"><span class=\"pre\">select_related</span></code> を一切呼び出さないようにします。他のタプルは、パラメータとして直接 <code class=\"docutils literal notranslate\"><span class=\"pre\">select_related</span></code> に渡されます。次に例を示します。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ArticleAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">list_select_related</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;author&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;category&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>これは <code class=\"docutils literal notranslate\"><span class=\"pre\">select_related('author',</span> <span class=\"pre\">'category')</span></code> を呼び出します。</p>\n<p>リクエストに基づいた動的な値を指定する場合は、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.get_list_select_related\" title=\"django.contrib.admin.ModelAdmin.get_list_select_related\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_list_select_related()</span></code></a> メソッドを実装できます。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> は <a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#django.db.models.query.QuerySet.select_related\" title=\"django.db.models.query.QuerySet.select_related\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">select_related()</span></code></a> がチェンジリストの <code class=\"docutils literal notranslate\"><span class=\"pre\">QuerySet</span></code> で既に呼び出されていた場合、この属性を無視します。</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.ordering\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">ordering</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.ordering\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Django の admin ビューでオブジェクトのリストをどのようにソートするかを指定するには、 <code class=\"docutils literal notranslate\"><span class=\"pre\">ordering</span></code> をセットしてください。モデルの <a class=\"reference internal\" href=\"/ja/6.0/ref/models/options/#django.db.models.Options.ordering\" title=\"django.db.models.Options.ordering\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ordering</span></code></a> パラメータと同じフォーマットでリストかタプルを与えてください。</p>\n<p>指定がない場合、Django admin はモデルのデフォルトの並び順を使用します。</p>\n<p>動的なソートを指定する場合 (例えばユーザーや言語に応じて変更する場合など)、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.get_ordering\" title=\"django.contrib.admin.ModelAdmin.get_ordering\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_ordering()</span></code></a> メソッドを実装できます。</p>\n<aside class=\"admonition-performance-considerations-with-ordering-and-sorting admonition\">\n<p class=\"admonition-title\">並べ替えやソートに伴うパフォーマンス上の注意</p>\n<p>全体のソートのための単一もしくは unique together フィールド指定をチェンジリストが見つけられない場合、チェンジリストは <code class=\"docutils literal notranslate\"><span class=\"pre\">pk</span></code> をチェンジリストに追加します。これは結果の決定論的なソートを保証するためです。</p>\n<p>たとえば、デフォルトのソートが一意でない <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> フィールドによって実行される場合、チェンジリストは <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">pk</span></code> でソートされます。テーブルのレコード数が多く、 <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">pk</span></code> のインデックスがない場合は、パフォーマンスの低下を招きます。</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.paginator\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">paginator</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.paginator\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>ページ分割に使われる paginator クラスです。デフォルトでは <a class=\"reference internal\" href=\"/ja/6.0/ref/paginator/#django.core.paginator.Paginator\" title=\"django.core.paginator.Paginator\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.core.paginator.Paginator</span></code></a> が使われます。カスタムの paginator クラスが <a class=\"reference internal\" href=\"/ja/6.0/ref/paginator/#django.core.paginator.Paginator\" title=\"django.core.paginator.Paginator\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.core.paginator.Paginator</span></code></a> と同じコンストラクタインターフェースを持たない場合、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.get_paginator\" title=\"django.contrib.admin.ModelAdmin.get_paginator\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">ModelAdmin.get_paginator()</span></code></a> に対する実装も行う必要があります。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.prepopulated_fields\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">prepopulated_fields</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.prepopulated_fields\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">prepopulated_fields</span></code> を、フィールド名と事前入力するフィールドをマッピングした辞書に設定します。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ArticleAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">prepopulated_fields</span> <span class=\"o\">=</span> <span class=\"p\">{</span><span class=\"s2\">&quot;slug&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;title&quot;</span><span class=\"p\">]}</span>\n</code></pre></div>\n<p>設定された場合、指定されたフィールドは割り当てられたフィールドから入力するために JavaScript を使用します。この機能の主な用途は、1つ以上の他のフィールドから <code class=\"docutils literal notranslate\"><span class=\"pre\">SlugField</span></code> フィールドの値を自動的に生成することです。生成される値はソースフィールドの値を連結し、その結果を有効なスラグに変換することで生成されます (たとえば、ダッシュをスペースに置き換えたり、ASCII 文字を小文字にしたりします)。</p>\n<p>事前入力されたフィールドは値が保存された後に JavaScript によって変更されることはありません。通常、スラグが変更されることは望ましくありません (スラグがオブジェクトで使用されている場合、オブジェクトの URL が変更されることになります)。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">prepopulated_fields</span></code> は <code class=\"docutils literal notranslate\"><span class=\"pre\">DateTimeField</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">OneToOneField</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> フィールドを受け入れません。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.preserve_filters\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">preserve_filters</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.preserve_filters\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>デフォルトでは、オブジェクトを作成、編集、削除しても、適用されたフィルタはリストビューに保存されます。この属性を <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> に設定することで、フィルタをクリアできます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.show_facets\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">show_facets</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.show_facets\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>管理画面のチェンジリストのフィルタにファセット数を表示するかどうかを制御します。デフォルトは <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.ShowFacets.ALLOW\" title=\"django.contrib.admin.ModelAdmin.ShowFacets.ALLOW\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ShowFacets.ALLOW</span></code></a> です。</p>\n<p>表示されている場合、ファセット数は現在適用されているフィルタに合わせて更新されます。</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.ShowFacets\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">ShowFacets</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.ShowFacets\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.show_facets\" title=\"django.contrib.admin.ModelAdmin.show_facets\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.show_facets</span></code></a> に指定できる値の Enum。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.ShowFacets.ALWAYS\">\n<span class=\"sig-name descname\"><span class=\"pre\">ALWAYS</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.ShowFacets.ALWAYS\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>常にファセット数を表示します。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.ShowFacets.ALLOW\">\n<span class=\"sig-name descname\"><span class=\"pre\">ALLOW</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.ShowFacets.ALLOW\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>クエリ文字列パラメータ <code class=\"docutils literal notranslate\"><span class=\"pre\">_facets</span></code> が指定された場合に、ファセット数を表示します。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.ShowFacets.NEVER\">\n<span class=\"sig-name descname\"><span class=\"pre\">NEVER</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.ShowFacets.NEVER\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>ファセット数を表示しません。</p>\n</dd></dl>\n\n</dd></dl>\n\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">show_facets</span></code> に必要な <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.ShowFacets\" title=\"django.contrib.admin.ModelAdmin.ShowFacets\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ShowFacets</span></code></a> の値を指定します。例えば、クエリパラメータを指定することなく常にファセット数を表示したい場合:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyModelAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n    <span class=\"c1\"># Have facets always shown for this model admin.</span>\n    <span class=\"n\">show_facets</span> <span class=\"o\">=</span> <span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ShowFacets</span><span class=\"o\">.</span><span class=\"n\">ALWAYS</span>\n</code></pre></div>\n<aside class=\"admonition-performance-considerations-with-facets admonition\">\n<p class=\"admonition-title\">ファセットを使う場合のパフォーマンス上の注意</p>\n<p>ファセットフィルタを有効にすると、管理画面のチェンジリストページのクエリ数がフィルタの数だけ増えます。これらのクエリは、特に大きなデータセットの場合、パフォーマンスの問題を引き起こすかもしれません。このような場合は、 <code class=\"docutils literal notranslate\"><span class=\"pre\">show_facets</span></code> を <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.ShowFacets.NEVER\" title=\"django.contrib.admin.ModelAdmin.ShowFacets.NEVER\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ShowFacets.NEVER</span></code></a> に設定して、ファセットを完全に無効にするのが適切でしょう。</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.radio_fields\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">radio_fields</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.radio_fields\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>デフォルトでは、<code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> や <code class=\"docutils literal notranslate\"><span class=\"pre\">choices</span></code> がセットされたフィールドに対して、Django の admin はセレクトボックスのインターフェース (&lt;select&gt;) を使用します。フィールドが <code class=\"docutils literal notranslate\"><span class=\"pre\">radio_fields</span></code> に指定された場合、Django は代わりに ラジオボタンのインターフェースを使用します。<code class=\"docutils literal notranslate\"><span class=\"pre\">group</span></code> が <code class=\"docutils literal notranslate\"><span class=\"pre\">Person</span></code> モデルの <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> だと仮定すると、次のようになります。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">radio_fields</span> <span class=\"o\">=</span> <span class=\"p\">{</span><span class=\"s2\">&quot;group&quot;</span><span class=\"p\">:</span> <span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">VERTICAL</span><span class=\"p\">}</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.admin</span></code> モジュールから <code class=\"docutils literal notranslate\"><span class=\"pre\">HORIZONTAL</span></code> か <code class=\"docutils literal notranslate\"><span class=\"pre\">VERTICAL</span></code> のどちらを使用するか選択してください。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> ないし <code class=\"docutils literal notranslate\"><span class=\"pre\">choices</span></code> がセットされたフィールド以外は、<code class=\"docutils literal notranslate\"><span class=\"pre\">radio_fields</span></code> に含めないでください。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.autocomplete_fields\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">autocomplete_fields</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.autocomplete_fields\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">autocomplete_fields</span></code> は、<a class=\"reference external\" href=\"https://select2.org/\">Select2</a> オートコンプリート入力に変更したい <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> ないし <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> フィールドのリストです。</p>\n<p>デフォルトでは、これらのフィールドに対して admin はセレクトボックスのインターフェース (<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;select&gt;</span></code>) を使用します。ドロップダウン内に表示する関係インスタンスをすべて選択するオーバーヘッドから逃れたいこともあるでしょう。</p>\n<p>Select2 入力はデフォルトの入力と似た見た目ですが、非同期的にオプションを読み込む検索機能を持っています。こちらの方が高速で、特に関係モデルに多くのインスタンスがある場合にはユーザーフレンドリーです。</p>\n<p>オートコンプリート検索はリレーション先オブジェクトの <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> を使用するため、<code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> に <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.search_fields\" title=\"django.contrib.admin.ModelAdmin.search_fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">search_fields</span></code></a> を定義する必要があります。</p>\n<p>認可されていないデータが漏洩されるのを防ぐため、オートコンプリートを使うには、ユーザーは必ずリレーション先オブジェクトに対する <code class=\"docutils literal notranslate\"><span class=\"pre\">view</span></code> か <code class=\"docutils literal notranslate\"><span class=\"pre\">change</span></code> 権限を持っていなければなりません。</p>\n<p>結果のソートおよびページ分割は、関係する <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> の <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.get_ordering\" title=\"django.contrib.admin.ModelAdmin.get_ordering\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_ordering()</span></code></a> と <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.get_paginator\" title=\"django.contrib.admin.ModelAdmin.get_paginator\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_paginator()</span></code></a> メソッドでコントロールします。</p>\n<p>以下の例では、<code class=\"docutils literal notranslate\"><span class=\"pre\">ChoiceAdmin</span></code> フィールドは <code class=\"docutils literal notranslate\"><span class=\"pre\">Question</span></code> への <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> に対するオートコンプリートフィールドを持ちます。結果は <code class=\"docutils literal notranslate\"><span class=\"pre\">question_text</span></code> フィールドによりフィルタされ、また <code class=\"docutils literal notranslate\"><span class=\"pre\">date_created</span></code> フィールドにより並べ替えられます:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">QuestionAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">ordering</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;date_created&quot;</span><span class=\"p\">]</span>\n    <span class=\"n\">search_fields</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;question_text&quot;</span><span class=\"p\">]</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ChoiceAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">autocomplete_fields</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;question&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<aside class=\"admonition-performance-considerations-for-large-datasets admonition\">\n<p class=\"admonition-title\">巨大なデータセットに対するパフォーマンス上の注意</p>\n<p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.ordering\" title=\"django.contrib.admin.ModelAdmin.ordering\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.ordering</span></code></a> を使った並べ替えは、巨大なクエリセットは遅くなるため、パフォーマンスの問題の原因となります。</p>\n<p>また、検索フィールドがデータベースによるインデックス化がされていないフィールドを含む場合、巨大なテーブルでは貧弱なパフォーマンスしか発揮できなくなってしまいます。</p>\n<p>このような場合は、フルテキストのインデックスサーチを使用した独自の <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.get_search_results\" title=\"django.contrib.admin.ModelAdmin.get_search_results\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">ModelAdmin.get_search_results()</span></code></a> 実装を記述するのがよいでしょう。</p>\n<p>また、デフォルトの paginator は常に  <code class=\"docutils literal notranslate\"><span class=\"pre\">count()</span></code> を発行するため、巨大なテーブルでは <code class=\"docutils literal notranslate\"><span class=\"pre\">Paginator</span></code> を変更するのがお勧めです。例えば、<code class=\"docutils literal notranslate\"><span class=\"pre\">Paginator.count</span></code> プロパティのデフォルトの実装をオーバーライドできます。</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.raw_id_fields\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">raw_id_fields</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.raw_id_fields\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>デフォルトでは、<code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> のフィールドに対して Django の admin はセレクトボックスのインターフェース (<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;select&gt;</span></code>) を使用します。ドロップダウン内に表示する関係インスタンスをすべて選択するオーバーヘッドから逃れたいこともあるでしょう。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">raw_id_fields</span></code> は、<code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> や <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> に対する <code class=\"docutils literal notranslate\"><span class=\"pre\">Input</span></code> ウィジェットを適用したいフィールドのリストです:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ArticleAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">raw_id_fields</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;newspaper&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">raw_id_fields</span></code> <code class=\"docutils literal notranslate\"><span class=\"pre\">Input</span></code> ウィジェットには、<code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> の場合はプライマリキーを、<code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> の場合はカンマで区切った値のリストを入力します。<code class=\"docutils literal notranslate\"><span class=\"pre\">raw_id_fields</span></code> ウィジェットには、ユーザーが値を検索および選択できるよう、隣にルーペボタンがあります:</p>\n<img alt=\"/ja/6.0/_images/raw_id_fields.png\" src=\"/ja/6.0/_images/raw_id_fields.png\" />\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.readonly_fields\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">readonly_fields</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.readonly_fields\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>デフォルトでは、すべてのフィールドが編集可能となっています。このオプションに含まれるフィールド (<code class=\"docutils literal notranslate\"><span class=\"pre\">list</span></code> か <code class=\"docutils literal notranslate\"><span class=\"pre\">tuple</span></code> で指定します) は、データをそのまま表示するだけで編集できなくなります。また、追加と編集に使われる <a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code></a> からも除外されます。 <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.fields\" title=\"django.contrib.admin.ModelAdmin.fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.fields</span></code></a> か <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.fieldsets\" title=\"django.contrib.admin.ModelAdmin.fieldsets\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.fieldsets</span></code></a> を指定した場合、read-only のフィールドは表示のために存在している必要があります (存在しなければ無視されます)。</p>\n<p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.fields\" title=\"django.contrib.admin.ModelAdmin.fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.fields</span></code></a> や <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.fieldsets\" title=\"django.contrib.admin.ModelAdmin.fieldsets\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.fieldsets</span></code></a> で明示的に並び順を定義しないで <code class=\"docutils literal notranslate\"><span class=\"pre\">readonly_fields</span></code> を使った場合、これらのフィールドはすべての編集可能なフィールドの後に表示されます。</p>\n<p>read-only のフィールドはモデルのフィールドからデータを表示するだけではなく、モデルや <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> クラス自身のメソッドの出力を表示させることもできます。これは <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.list_display\" title=\"django.contrib.admin.ModelAdmin.list_display\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.list_display</span></code></a> の挙動に似ています。これにより、編集中のオブジェクトのステータスのフィードバックを admin インターフェースに与えることができるようになります。たとえば:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils.html</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">format_html_join</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils.safestring</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">mark_safe</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">readonly_fields</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;address_report&quot;</span><span class=\"p\">]</span>\n\n    <span class=\"c1\"># description functions like a model field&#39;s verbose_name</span>\n    <span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">display</span><span class=\"p\">(</span><span class=\"n\">description</span><span class=\"o\">=</span><span class=\"s2\">&quot;Address&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">address_report</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">instance</span><span class=\"p\">):</span>\n        <span class=\"c1\"># assuming get_full_address() returns a list of strings</span>\n        <span class=\"c1\"># for each line of the address and you want to separate each</span>\n        <span class=\"c1\"># line by a linebreak</span>\n        <span class=\"k\">return</span> <span class=\"n\">format_html_join</span><span class=\"p\">(</span>\n            <span class=\"n\">mark_safe</span><span class=\"p\">(</span><span class=\"s2\">&quot;&lt;br&gt;&quot;</span><span class=\"p\">),</span>\n            <span class=\"s2\">&quot;</span><span class=\"si\">{}</span><span class=\"s2\">&quot;</span><span class=\"p\">,</span>\n            <span class=\"p\">((</span><span class=\"n\">line</span><span class=\"p\">,)</span> <span class=\"k\">for</span> <span class=\"n\">line</span> <span class=\"ow\">in</span> <span class=\"n\">instance</span><span class=\"o\">.</span><span class=\"n\">get_full_address</span><span class=\"p\">()),</span>\n        <span class=\"p\">)</span> <span class=\"ow\">or</span> <span class=\"n\">mark_safe</span><span class=\"p\">(</span><span class=\"s2\">&quot;&lt;span class=&#39;errors&#39;&gt;I can&#39;t determine this address.&lt;/span&gt;&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.save_as\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">save_as</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.save_as\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin のチェンジーフォームで &quot;新規に保存&quot; 機能を有効化するには <code class=\"docutils literal notranslate\"><span class=\"pre\">save_as</span></code> をセットしてください。</p>\n<p>通常、オブジェクトには 3 つの保存オプションがあります: &quot;保存&quot;、&quot;保存して編集を続ける&quot;、&quot;保存して 1 つ追加&quot; です。<code class=\"docutils literal notranslate\"><span class=\"pre\">save_as</span></code> が <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> の場合、&quot;保存して 1 つ追加&quot; が &quot;新規に保存&quot; ボタンに変更され、既存のオブジェクトを変更するのではなく (新しい ID) で新規のオブジェクトが作成されるようになります。</p>\n<p>デフォルトでは <code class=\"docutils literal notranslate\"><span class=\"pre\">save_as</span></code> は <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> にセットされています。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.save_as_continue\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">save_as_continue</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.save_as_continue\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.save_as\" title=\"django.contrib.admin.ModelAdmin.save_as\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">save_as=True</span></code></a> のとき、新規オブジェクトを保存した後のデフォルトのリダイレクト先はそのオブジェクトの変更ビューです。<code class=\"docutils literal notranslate\"><span class=\"pre\">save_as_continue=False</span></code> にセットすると、リダイレクト先がチェンジリストビューになります。</p>\n<p>デフォルトでは <code class=\"docutils literal notranslate\"><span class=\"pre\">save_as_continue</span></code> は <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> にセットされています。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.save_on_top\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">save_on_top</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.save_on_top\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin のチェンジフォームの上部に保存ボタンを追加するには <code class=\"docutils literal notranslate\"><span class=\"pre\">save_on_top</span></code> をセットしてください。</p>\n<p>通常、保存ボタンはフォームの下部のみに表示されます。<code class=\"docutils literal notranslate\"><span class=\"pre\">save_on_top</span></code> をセットすると、ボタンは上部と下部の両方に表示されるようになります。</p>\n<p>デフォルトでは <code class=\"docutils literal notranslate\"><span class=\"pre\">save_on_top</span></code> は <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> にセットされています。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.search_fields\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">search_fields</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.search_fields\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin のチェンジリストページで検索ボックスを有効化するには <code class=\"docutils literal notranslate\"><span class=\"pre\">search_fields</span></code> をセットしてください。セットするのはフィールド名のリストで、ここで指定したフィールドはテキストボックス内での検索クエリの対象となります。</p>\n<p>指定するフィールドの種類は、<code class=\"docutils literal notranslate\"><span class=\"pre\">CharField</span></code> や <code class=\"docutils literal notranslate\"><span class=\"pre\">TextField</span></code> といったテキストフィールドである必要があります。ルックアップ API の &quot;follow&quot; 記法を使えば <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> や <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> をルックアップすることもできます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">search_fields</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;foreign_key__related_fieldname&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>たとえば、著者の情報を持つブログエントリーの場合、以下の定義により、著者のメールアドレスによるブログエントリーの検索が可能となります。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">search_fields</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;user__email&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>検索ボックスで検索が行われるとき、Django は検索クエリを単語に分割し、(<a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#std-fieldlookup-icontains\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">icontains</span></code></a> ルックアップを使って) 大文字と小文字を区別しない各単語を含むオブジェクトを返します。各単語は最低 1 つの <code class=\"docutils literal notranslate\"><span class=\"pre\">search_fields</span></code> に含まれている必要があります。例えば、<code class=\"docutils literal notranslate\"><span class=\"pre\">search_fields</span></code> が <code class=\"docutils literal notranslate\"><span class=\"pre\">['first_name',</span> <span class=\"pre\">'last_name']</span></code> にセットされ、ユーザーが <code class=\"docutils literal notranslate\"><span class=\"pre\">john</span> <span class=\"pre\">lennon</span></code> と検索した場合、Django は SQL の <code class=\"docutils literal notranslate\"><span class=\"pre\">WHERE</span></code> 節と同等の検索を実行します。</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">WHERE</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">first_name</span><span class=\"w\"> </span><span class=\"k\">ILIKE</span><span class=\"w\"> </span><span class=\"s1\">&#39;%john%&#39;</span><span class=\"w\"> </span><span class=\"k\">OR</span><span class=\"w\"> </span><span class=\"n\">last_name</span><span class=\"w\"> </span><span class=\"k\">ILIKE</span><span class=\"w\"> </span><span class=\"s1\">&#39;%john%&#39;</span><span class=\"p\">)</span>\n<span class=\"k\">AND</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">first_name</span><span class=\"w\"> </span><span class=\"k\">ILIKE</span><span class=\"w\"> </span><span class=\"s1\">&#39;%lennon%&#39;</span><span class=\"w\"> </span><span class=\"k\">OR</span><span class=\"w\"> </span><span class=\"n\">last_name</span><span class=\"w\"> </span><span class=\"k\">ILIKE</span><span class=\"w\"> </span><span class=\"s1\">&#39;%lennon%&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>検索クエリには空白を含む引用句を含めることができます。たとえば、ユーザが <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;john</span> <span class=\"pre\">winston&quot;</span></code> や <code class=\"docutils literal notranslate\"><span class=\"pre\">'john</span> <span class=\"pre\">winston'</span></code> を検索した場合、 Django はこの SQL の <code class=\"docutils literal notranslate\"><span class=\"pre\">WHERE</span></code> 句と等価な処理を行います。</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">WHERE</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"n\">first_name</span><span class=\"w\"> </span><span class=\"k\">ILIKE</span><span class=\"w\"> </span><span class=\"s1\">&#39;%john winston%&#39;</span><span class=\"w\"> </span><span class=\"k\">OR</span><span class=\"w\"> </span><span class=\"n\">last_name</span><span class=\"w\"> </span><span class=\"k\">ILIKE</span><span class=\"w\"> </span><span class=\"s1\">&#39;%john winston%&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>もし <code class=\"docutils literal notranslate\"><span class=\"pre\">icontains</span></code> ルックアップを使用したくない場合は、フィールドに追加することで任意のルックアップを使用できます。例えば、<code class=\"docutils literal notranslate\"><span class=\"pre\">search_fields</span></code> を <code class=\"docutils literal notranslate\"><span class=\"pre\">['first_name__exact']</span></code> に設定することで、<a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#std-fieldlookup-exact\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">exact</span></code></a> を使用できます。</p>\n<p>いくつかの (古い) ショートカットを使って、フィールドルックアップを指定することもできます。以下の文字で <code class=\"docutils literal notranslate\"><span class=\"pre\">search_fields</span></code> 内のフィールドにプレフィックスを追加できます。これはフィールドに <code class=\"docutils literal notranslate\"><span class=\"pre\">__&lt;lookup&gt;</span></code> を追加するのと同等です。</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p>プレフィックス</p></th>\n<th class=\"head\"><p>ルックアップ</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p>^</p></td>\n<td><p><a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#std-fieldlookup-istartswith\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">istartswith</span></code></a></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p>=</p></td>\n<td><p><a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#std-fieldlookup-iexact\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">iexact</span></code></a></p></td>\n</tr>\n<tr class=\"row-even\"><td><p>&#64;</p></td>\n<td><p><a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/postgres/search/#std-fieldlookup-search\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">search</span></code></a></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p>None</p></td>\n<td><p><a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#std-fieldlookup-icontains\"><code class=\"xref std std-lookup docutils literal notranslate\"><span class=\"pre\">icontains</span></code></a></p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>検索方法をカスタムする必要がある場合は、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.get_search_results\" title=\"django.contrib.admin.ModelAdmin.get_search_results\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">ModelAdmin.get_search_results()</span></code></a> を使って追加的もしくは代替の検索方法を提供できます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.search_help_text\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">search_help_text</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.search_help_text\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">search_help_text</span></code> には検索ボックスの下に表示される説明文を指定します。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.show_full_result_count\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">show_full_result_count</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.show_full_result_count\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>フィルタリングされた admin ページにオブジェクトのカウント (例: <code class=\"docutils literal notranslate\"><span class=\"pre\">99</span> <span class=\"pre\">results</span> <span class=\"pre\">(103</span> <span class=\"pre\">total)</span></code>) を表示するかどうかをコントロールするには、<code class=\"docutils literal notranslate\"><span class=\"pre\">show_full_result_count</span></code> をセットしてください。<code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> にセットすると、代わりに <code class=\"docutils literal notranslate\"><span class=\"pre\">99</span> <span class=\"pre\">results</span> <span class=\"pre\">(Show</span> <span class=\"pre\">all)</span></code> のような文字列が表示されるようになります。</p>\n<p>デフォルトの <code class=\"docutils literal notranslate\"><span class=\"pre\">show_full_result_count=True</span></code> は、テーブル内の全アイテムをカウントするクエリを発行するため、多くの行を含むテーブルではパフォーマンス低下の原因となります。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.sortable_by\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">sortable_by</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.sortable_by\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>デフォルトでは、チェンジリストページでは <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.list_display\" title=\"django.contrib.admin.ModelAdmin.list_display\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">list_display</span></code></a> で指定された全てのモデルフィールド (および <a class=\"reference internal\" href=\"#django.contrib.admin.display\" title=\"django.contrib.admin.display\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">display()</span></code></a> デコレータの <code class=\"docutils literal notranslate\"><span class=\"pre\">ordering</span></code> 引数を使用する呼び出し可能オブジェクト、または <code class=\"docutils literal notranslate\"><span class=\"pre\">admin_order_field</span></code> 属性を持つ呼び出し可能オブジェクト) によるソートが可能です。</p>\n<p>特定のカラムでのソートを無効化したい場合、 <code class=\"docutils literal notranslate\"><span class=\"pre\">sortable_by</span></code> に <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.list_display\" title=\"django.contrib.admin.ModelAdmin.list_display\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">list_display</span></code></a> サブセットのコレクション (例: <code class=\"docutils literal notranslate\"><span class=\"pre\">list</span></code> 、 <code class=\"docutils literal notranslate\"><span class=\"pre\">tuple</span></code> 、 <code class=\"docutils literal notranslate\"><span class=\"pre\">set</span></code>) をセットしてください。空のコレクションを指定すると、すべてのカラムでソート不可となります。</p>\n<p>リストを動的に指定する必要があるときは、代わりに <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.get_sortable_by\" title=\"django.contrib.admin.ModelAdmin.get_sortable_by\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_sortable_by()</span></code></a> メソッドを実装してください。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.view_on_site\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">view_on_site</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.view_on_site\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>&quot;サイトで見る&quot; リンクを表示するか否かをコントロールするには、<code class=\"docutils literal notranslate\"><span class=\"pre\">view_on_site</span></code> をセットしてください。このリンクは保存されたオブジェクトを表示できる URL に誘導します。</p>\n<p>値は、真偽値か呼び出し可能オブジェクトで指定します。<code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> (デフォルトです) の場合、オブジェクトの <a class=\"reference internal\" href=\"/ja/6.0/ref/models/instances/#django.db.models.Model.get_absolute_url\" title=\"django.db.models.Model.get_absolute_url\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_absolute_url()</span></code></a> メソッドが使われ、URLが生成されます。</p>\n<p>モデルが <a class=\"reference internal\" href=\"/ja/6.0/ref/models/instances/#django.db.models.Model.get_absolute_url\" title=\"django.db.models.Model.get_absolute_url\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_absolute_url()</span></code></a> メソッドを持っていても &quot;サイトで見る&quot; ボタンを表示したくない場合は、<code class=\"docutils literal notranslate\"><span class=\"pre\">view_on_site</span></code> に <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> をセットしてください:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">view_on_site</span> <span class=\"o\">=</span> <span class=\"kc\">False</span>\n</code></pre></div>\n<p>呼び出し可能オブジェクトの場合、引数にモデルのインスタンスを受け入れます。例えば:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">reverse</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">view_on_site</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"p\">):</span>\n        <span class=\"n\">url</span> <span class=\"o\">=</span> <span class=\"n\">reverse</span><span class=\"p\">(</span><span class=\"s2\">&quot;person-detail&quot;</span><span class=\"p\">,</span> <span class=\"n\">kwargs</span><span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;slug&quot;</span><span class=\"p\">:</span> <span class=\"n\">obj</span><span class=\"o\">.</span><span class=\"n\">slug</span><span class=\"p\">})</span>\n        <span class=\"k\">return</span> <span class=\"s2\">&quot;https://example.com&quot;</span> <span class=\"o\">+</span> <span class=\"n\">url</span>\n</code></pre></div>\n</dd></dl>\n\n<section id=\"custom-template-options\">\n<h4>カスタムテンプレートのオプション<a class=\"heading-anchor\" href=\"#custom-template-options\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p><a class=\"reference internal\" href=\"#admin-overriding-templates\"><span class=\"std std-ref\">admin テンプレートをオーバーライドする</span></a> セクションでは、デフォルトの admin テンプレートをオーバーライドないし拡張する方法を説明しています。<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code></a> ビューで使用されるデフォルトのテンプレートをオーバーライドするには、以下のオプションを使用してください:</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.add_form_template\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">add_form_template</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.add_form_template\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>カスタムンテンプレートの絶対パスで、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.add_view\" title=\"django.contrib.admin.ModelAdmin.add_view\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">add_view()</span></code></a> で使われます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.change_form_template\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">change_form_template</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.change_form_template\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>カスタムンテンプレートの絶対パスで、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.change_view\" title=\"django.contrib.admin.ModelAdmin.change_view\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">change_view()</span></code></a> で使われます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.change_list_template\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">change_list_template</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.change_list_template\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>カスタムンテンプレートの絶対パスで、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.changelist_view\" title=\"django.contrib.admin.ModelAdmin.changelist_view\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">changelist_view()</span></code></a> で使われます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.delete_confirmation_template\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">delete_confirmation_template</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.delete_confirmation_template\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>カスタムンテンプレートの絶対パスで、1 つ以上のオブジェクトを削除するときに確認ページを表示するために、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.delete_view\" title=\"django.contrib.admin.ModelAdmin.delete_view\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">delete_view()</span></code></a> で使われます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.delete_selected_confirmation_template\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">delete_selected_confirmation_template</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.delete_selected_confirmation_template\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>カスタムンテンプレートの絶対パスで、1 つ以上のオブジェクトを削除するときに確認ページを表示するために、<code class=\"docutils literal notranslate\"><span class=\"pre\">delete_selected</span></code> アクションメソッドで使われます。<a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/admin/actions/\"><span class=\"doc\">アクションのドキュメント</span></a> を参照してください。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.object_history_template\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">object_history_template</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.object_history_template\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>カスタムンテンプレートの絶対パスで、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.history_view\" title=\"django.contrib.admin.ModelAdmin.history_view\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">history_view()</span></code></a> で使われます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.popup_response_template\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">popup_response_template</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.popup_response_template\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>カスタムンテンプレートの絶対パスで、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.response_add\" title=\"django.contrib.admin.ModelAdmin.response_add\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">response_add()</span></code></a>、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.response_change\" title=\"django.contrib.admin.ModelAdmin.response_change\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">response_change()</span></code></a>、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.response_delete\" title=\"django.contrib.admin.ModelAdmin.response_delete\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">response_delete()</span></code></a> の 3 つで使われます。</p>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"modeladmin-methods\">\n<span id=\"model-admin-methods\"></span><h3><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> のメソッド<a class=\"heading-anchor\" href=\"#modeladmin-methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">警告</p>\n<p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.save_model\" title=\"django.contrib.admin.ModelAdmin.save_model\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">ModelAdmin.save_model()</span></code></a> や <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.delete_model\" title=\"django.contrib.admin.ModelAdmin.delete_model\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">ModelAdmin.delete_model()</span></code></a> をオーバーライドするときは、オブジェクトの保存や削除の処理を記述する必要があります。これは、制限を設けるためではなく、追加的な操作を可能にするための仕様です。</p>\n</aside>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.save_model\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">save_model</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">form</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">change</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.save_model\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">save_model</span></code> メソッドには、<code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code>、モデルのインスタンス、<code class=\"docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code> のインスタンス、追加か変更かを表す真偽値が渡されます。このメソッドをオーバーライドすると、保存の前後に操作を追加できます。<code class=\"docutils literal notranslate\"><span class=\"pre\">super().save_model()</span></code> を呼び出して、<a class=\"reference internal\" href=\"/ja/6.0/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">Model.save()</span></code></a> を使ってオブジェクトを保存してください。</p>\n<p>例えば、保存前にオブジェクトに <code class=\"docutils literal notranslate\"><span class=\"pre\">request.user</span></code> を追加するには:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ArticleAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">save_model</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"p\">,</span> <span class=\"n\">form</span><span class=\"p\">,</span> <span class=\"n\">change</span><span class=\"p\">):</span>\n        <span class=\"n\">obj</span><span class=\"o\">.</span><span class=\"n\">user</span> <span class=\"o\">=</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">user</span>\n        <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">save_model</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"p\">,</span> <span class=\"n\">form</span><span class=\"p\">,</span> <span class=\"n\">change</span><span class=\"p\">)</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.delete_model\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">delete_model</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.delete_model\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">delete_model</span></code> には、<code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> とモデルのインスタンスが渡されます。このメソッドをオーバーライドすると、削除の前後に操作を追加できます。<code class=\"docutils literal notranslate\"><span class=\"pre\">super().delete_model()</span></code> を呼び出して、<a class=\"reference internal\" href=\"/ja/6.0/ref/models/instances/#django.db.models.Model.delete\" title=\"django.db.models.Model.delete\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">Model.delete()</span></code></a> を使ってオブジェクトを削除してください。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.delete_queryset\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">delete_queryset</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">queryset</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.delete_queryset\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">delete_queryset()</span></code> には、<code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> と削除するオブジェクトの <code class=\"docutils literal notranslate\"><span class=\"pre\">QuerySet</span></code> が渡されます。このメソッドをオーバーライドすると、&quot;選択したオブジェクトの削除&quot; <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/admin/actions/\"><span class=\"doc\">アクション</span></a> に対する削除のプロセスをカスタムできます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.save_formset\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">save_formset</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">form</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">formset</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">change</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.save_formset\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">save_formset</span></code> メソッドには、<code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code>、親 <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code> のインスタンス、親オブジェクトの追加か変更かを表す真偽値が与えられます。</p>\n<p>たとえば、変更のあったフォームセットのモデルのインスタンスそれぞれに <code class=\"docutils literal notranslate\"><span class=\"pre\">request.user</span></code> を追加するには、次のようにします。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ArticleAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">save_formset</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">form</span><span class=\"p\">,</span> <span class=\"n\">formset</span><span class=\"p\">,</span> <span class=\"n\">change</span><span class=\"p\">):</span>\n        <span class=\"n\">instances</span> <span class=\"o\">=</span> <span class=\"n\">formset</span><span class=\"o\">.</span><span class=\"n\">save</span><span class=\"p\">(</span><span class=\"n\">commit</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n        <span class=\"k\">for</span> <span class=\"n\">obj</span> <span class=\"ow\">in</span> <span class=\"n\">formset</span><span class=\"o\">.</span><span class=\"n\">deleted_objects</span><span class=\"p\">:</span>\n            <span class=\"n\">obj</span><span class=\"o\">.</span><span class=\"n\">delete</span><span class=\"p\">()</span>\n        <span class=\"k\">for</span> <span class=\"n\">instance</span> <span class=\"ow\">in</span> <span class=\"n\">instances</span><span class=\"p\">:</span>\n            <span class=\"n\">instance</span><span class=\"o\">.</span><span class=\"n\">user</span> <span class=\"o\">=</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">user</span>\n            <span class=\"n\">instance</span><span class=\"o\">.</span><span class=\"n\">save</span><span class=\"p\">()</span>\n        <span class=\"n\">formset</span><span class=\"o\">.</span><span class=\"n\">save_m2m</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>関連項目: <a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#saving-objects-in-the-formset\"><span class=\"std std-ref\">フォームセット内のオブジェクトを保存する</span></a></p>\n</dd></dl>\n\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">警告</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> プロパティを返すすべてのフックは、その値のコピーではなく、プロパティ自体を返します。動的に値を変更すると、予期しない結果を招くことがあります。</p>\n<p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.get_readonly_fields\" title=\"django.contrib.admin.ModelAdmin.get_readonly_fields\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">ModelAdmin.get_readonly_fields()</span></code></a> を例に取ってみましょう。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">readonly_fields</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">]</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_readonly_fields</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">):</span>\n        <span class=\"n\">readonly</span> <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">get_readonly_fields</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"p\">)</span>\n        <span class=\"k\">if</span> <span class=\"ow\">not</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">user</span><span class=\"o\">.</span><span class=\"n\">is_superuser</span><span class=\"p\">:</span>\n            <span class=\"n\">readonly</span><span class=\"o\">.</span><span class=\"n\">append</span><span class=\"p\">(</span><span class=\"s2\">&quot;age&quot;</span><span class=\"p\">)</span>  <span class=\"c1\"># Edits the class attribute.</span>\n        <span class=\"k\">return</span> <span class=\"n\">readonly</span>\n</code></pre></div>\n<p>これにより、<code class=\"docutils literal notranslate\"><span class=\"pre\">readonly_fields</span></code> は <code class=\"docutils literal notranslate\"><span class=\"pre\">[&quot;name&quot;,</span> <span class=\"pre\">&quot;age&quot;,</span> <span class=\"pre\">&quot;age&quot;,</span> <span class=\"pre\">...]</span></code> となり、スーパーユーザーであっても、非スーパーユーザーがページを訪れるたびに <code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;age&quot;</span></code> が追加されることになります。</p>\n</aside>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_ordering\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_ordering</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_ordering\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">get_ordering</span></code> メソッドは引数に <code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code> を取り、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.ordering\" title=\"django.contrib.admin.ModelAdmin.ordering\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ordering</span></code></a> のときと同じような <code class=\"docutils literal notranslate\"><span class=\"pre\">list</span></code> か <code class=\"docutils literal notranslate\"><span class=\"pre\">tuple</span></code> を返すことが期待されます。次に例を示します。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_ordering</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">):</span>\n        <span class=\"k\">if</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">user</span><span class=\"o\">.</span><span class=\"n\">is_superuser</span><span class=\"p\">:</span>\n            <span class=\"k\">return</span> <span class=\"p\">[</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;rank&quot;</span><span class=\"p\">]</span>\n        <span class=\"k\">else</span><span class=\"p\">:</span>\n            <span class=\"k\">return</span> <span class=\"p\">[</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_search_results\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_search_results</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">queryset</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">search_term</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_search_results\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">get_search_results</span></code> メソッドは、検索語と一致するオブジェクトを表示するための、オブジェクトのリストを修正します。リクエスト、現在のフィルタを適用するクエリセット、 ユーザーが入力した検索語を受け取ります。 検索を実行するために修正されたクエリセットと、結果に重複があるかどうかを表す真偽値を含むタプルを返します。</p>\n<p>デフォルトの実装では、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.search_fields\" title=\"django.contrib.admin.ModelAdmin.search_fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.search_fields</span></code></a> に含まれるフィールドを検索します。</p>\n<p>このメソッドは、独自の検索方法でオーバーライドできます。例えば、数値のフィールドで検索したり、<a class=\"reference external\" href=\"https://solr.apache.org\">Solr</a> や <a class=\"reference external\" href=\"https://haystacksearch.org\">Haystack</a> といった外部のツールを使うことができます。独自の検索方法によって実装されたクエリセットの変更が結果に重複を生じさせるかを確認し、返値の 2 番目の要素に <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> を返す必要があります。</p>\n<p>たとえば、<code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">age</span></code> で検索するには、以下のように使います。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;age&quot;</span><span class=\"p\">]</span>\n    <span class=\"n\">search_fields</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">]</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_search_results</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">queryset</span><span class=\"p\">,</span> <span class=\"n\">search_term</span><span class=\"p\">):</span>\n        <span class=\"n\">queryset</span><span class=\"p\">,</span> <span class=\"n\">may_have_duplicates</span> <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">get_search_results</span><span class=\"p\">(</span>\n            <span class=\"n\">request</span><span class=\"p\">,</span>\n            <span class=\"n\">queryset</span><span class=\"p\">,</span>\n            <span class=\"n\">search_term</span><span class=\"p\">,</span>\n        <span class=\"p\">)</span>\n        <span class=\"k\">try</span><span class=\"p\">:</span>\n            <span class=\"n\">search_term_as_int</span> <span class=\"o\">=</span> <span class=\"nb\">int</span><span class=\"p\">(</span><span class=\"n\">search_term</span><span class=\"p\">)</span>\n        <span class=\"k\">except</span> <span class=\"ne\">ValueError</span><span class=\"p\">:</span>\n            <span class=\"k\">pass</span>\n        <span class=\"k\">else</span><span class=\"p\">:</span>\n            <span class=\"n\">queryset</span> <span class=\"o\">|=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">model</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">age</span><span class=\"o\">=</span><span class=\"n\">search_term_as_int</span><span class=\"p\">)</span>\n        <span class=\"k\">return</span> <span class=\"n\">queryset</span><span class=\"p\">,</span> <span class=\"n\">may_have_duplicates</span>\n</code></pre></div>\n<p>この実装は、数値フィールドに対して文字列比較を行う <code class=\"docutils literal notranslate\"><span class=\"pre\">search_fields</span> <span class=\"pre\">=</span> <span class=\"pre\">('name',</span> <span class=\"pre\">'=age')</span></code> に比べて、はるかに効率的です... たとえば PostgreSQL では <code class=\"docutils literal notranslate\"><span class=\"pre\">...</span> <span class=\"pre\">OR</span> <span class=\"pre\">UPPER(&quot;polls_choice&quot;.&quot;votes&quot;::text)</span> <span class=\"pre\">=</span> <span class=\"pre\">UPPER('4')</span></code> となります。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.save_related\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">save_related</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">form</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">formsets</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">change</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.save_related\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">save_related</span></code> メソッドには、<code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code>、親 <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code> のインスタンス、インラインフォームセットのリスト、親の追加か変更かを表す真偽値が与えられます。このメソッドで、保存の前後に親に対するリレーション先オブジェクトに対する操作を追加できます。この時点では親オブジェクトとそのフォームはすでに保存されていることに注意してください。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_autocomplete_fields\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_autocomplete_fields</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_autocomplete_fields\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">get_autocomplete_fields()</span></code> メソッドには、<code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> が渡され、上述の <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.autocomplete_fields\" title=\"django.contrib.admin.ModelAdmin.autocomplete_fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.autocomplete_fields</span></code></a> セクションで説明した通りオートコンプリートウィジェットで表示するフィールドの名前の <code class=\"docutils literal notranslate\"><span class=\"pre\">list</span></code> か <code class=\"docutils literal notranslate\"><span class=\"pre\">tuple</span></code> を返すことが期待されます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_readonly_fields\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_readonly_fields</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_readonly_fields\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">get_readonly_fields</span></code> メソッドには、<code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> と編集対象の <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> (ないし新規追加用の <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>) が渡され、上述の <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.readonly_fields\" title=\"django.contrib.admin.ModelAdmin.readonly_fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.readonly_fields</span></code></a> セクションで説明した通り、読み取り専用で表示するフィールドの名前の <code class=\"docutils literal notranslate\"><span class=\"pre\">list</span></code> か <code class=\"docutils literal notranslate\"><span class=\"pre\">tuple</span></code> を返すことが期待されます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_prepopulated_fields\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_prepopulated_fields</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_prepopulated_fields\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">get_prepopulated_fields</span></code> メソッドには、<code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> と編集対象の <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> (ないし新規追加用の <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>) が渡され、上述の <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.prepopulated_fields\" title=\"django.contrib.admin.ModelAdmin.prepopulated_fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.prepopulated_fields</span></code></a> セクションで説明した通り <code class=\"docutils literal notranslate\"><span class=\"pre\">dictionary</span></code> を返すことが期待されます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_list_display\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_list_display</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_list_display\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">get_list_display</span></code> メソッドには、<code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> が渡され、上述の <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.list_display\" title=\"django.contrib.admin.ModelAdmin.list_display\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.list_display</span></code></a> セクションで説明した通りチェンジリストビューで表示するフィールドの名前の <code class=\"docutils literal notranslate\"><span class=\"pre\">list</span></code> か <code class=\"docutils literal notranslate\"><span class=\"pre\">tuple</span></code> を返すことが期待されます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_list_display_links\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_list_display_links</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">list_display</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_list_display_links\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">get_list_display_links</span></code> メソッドには、<code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> と <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.get_list_display\" title=\"django.contrib.admin.ModelAdmin.get_list_display\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">ModelAdmin.get_list_display()</span></code></a> によって返された <code class=\"docutils literal notranslate\"><span class=\"pre\">list</span></code> ないし <code class=\"docutils literal notranslate\"><span class=\"pre\">tuple</span></code> が渡されます。上述の <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.list_display_links\" title=\"django.contrib.admin.ModelAdmin.list_display_links\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.list_display_links</span></code></a> セクションで説明した通り、チェンジリストで変更ビューにリンクを貼りたいフィールドの名前の <code class=\"docutils literal notranslate\"><span class=\"pre\">list</span></code> か <code class=\"docutils literal notranslate\"><span class=\"pre\">tuple</span></code>、もしくは <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> を返すことが期待されます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_exclude\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_exclude</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_exclude\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">get_exclude</span></code> メソッドには、<code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> と編集対象の <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> (ないし新規追加用の <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>) が渡され、上述の <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.exclude\" title=\"django.contrib.admin.ModelAdmin.exclude\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.exclude</span></code></a> セクションで説明した通りフィールドのリストを返すことが期待されます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_fields\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_fields</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_fields\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">get_fields</span></code> メソッドには、<code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> と編集対象の <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> (ないし新規追加用の <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>) が渡され、上述の <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.fields\" title=\"django.contrib.admin.ModelAdmin.fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.fields</span></code></a> セクションで説明した通りフィールドのリストを返すことが期待されます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_fieldsets\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_fieldsets</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_fieldsets\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">get_fieldsets</span></code> メソッドには、<code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> と編集対象の <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> (ないし新規追加用の <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>) が渡され、2 値タプルのリストを返すことが期待されます。各 2 値タプルは、上述の <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.fieldsets\" title=\"django.contrib.admin.ModelAdmin.fieldsets\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.fieldsets</span></code></a> セクションで説明した通り admin のフォームページ上の <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;fieldset&gt;</span></code> を表します。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_list_filter\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_list_filter</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_list_filter\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">get_list_filter</span></code> メソッドには、<code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> が渡され、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.list_filter\" title=\"django.contrib.admin.ModelAdmin.list_filter\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">list_filter</span></code></a> 属性のときと同じ種類のシーケンス型を返すことが期待されます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_list_select_related\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_list_select_related</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_list_select_related\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">get_list_select_related</span></code> メソッドには、<code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> が渡され、真偽値もしくは <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.list_select_related\" title=\"django.contrib.admin.ModelAdmin.list_select_related\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.list_select_related</span></code></a> と同様のリストを返す必要があります。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_search_fields\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_search_fields</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_search_fields\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">get_search_fields</span></code> メソッドには、<code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> が渡され、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.search_fields\" title=\"django.contrib.admin.ModelAdmin.search_fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">search_fields</span></code></a> 属性のときと同じ種類のシーケンス型を返すことが期待されます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_sortable_by\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_sortable_by</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_sortable_by\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">get_list_display</span></code> メソッドは <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> を受け取り、チェンジリストページでソート可能なフィールドの名のコレクション (例: <code class=\"docutils literal notranslate\"><span class=\"pre\">list</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">tuple</span></code>、<code class=\"docutils literal notranslate\"><span class=\"pre\">set</span></code>) を返すことが期待されます。</p>\n<p>デフォルトの実装では、セットされている場合は <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.sortable_by\" title=\"django.contrib.admin.ModelAdmin.sortable_by\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">sortable_by</span></code></a> を返します。セットされていなければ <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.get_list_display\" title=\"django.contrib.admin.ModelAdmin.get_list_display\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_list_display()</span></code></a> を参照します。</p>\n<p>たとえば、1 つ以上のカラムを並び替え不可にするには:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_sortable_by</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"p\">{</span><span class=\"o\">*</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">get_list_display</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">)}</span> <span class=\"o\">-</span> <span class=\"p\">{</span><span class=\"s2\">&quot;rank&quot;</span><span class=\"p\">}</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_inline_instances\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_inline_instances</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_inline_instances\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">get_inline_instances</span></code> メソッドは、編集中の <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> (追加フォームの場合は <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>) を受け取り、以下の <a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin\" title=\"django.contrib.admin.InlineModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin</span></code></a> セクションで説明されているように、<a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin\" title=\"django.contrib.admin.InlineModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin</span></code></a> オブジェクトの <code class=\"docutils literal notranslate\"><span class=\"pre\">list</span></code> または <code class=\"docutils literal notranslate\"><span class=\"pre\">tuple</span></code> を返すことが期待されます。例えば、以下は追加、変更、削除、閲覧の権限に基づくデフォルトのフィルタリングなしでインラインを返す方法です:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyModelAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">inlines</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"n\">MyInline</span><span class=\"p\">]</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_inline_instances</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"p\">[</span><span class=\"n\">inline</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">model</span><span class=\"p\">,</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">admin_site</span><span class=\"p\">)</span> <span class=\"k\">for</span> <span class=\"n\">inline</span> <span class=\"ow\">in</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">inlines</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>このメソッドをオーバーライドする場合、返値となるインラインは <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.inlines\" title=\"django.contrib.admin.ModelAdmin.inlines\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">inlines</span></code></a> で定義したクラスのインスタンスにしてください。間違えると、リレーション先オブジェクトを追加する際に &quot;Bad Request&quot; が発生する可能性があります。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_inlines\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_inlines</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_inlines\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">get_inlines</span></code> メソッドは、編集対象の <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> (追加フォームの場合は <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>) を受け取り、インラインのイテラブルを返すことが期待されます。 <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.inlines\" title=\"django.contrib.admin.ModelAdmin.inlines\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.inlines</span></code></a> で指定する代わりに、このメソッドをオーバーライドすることで、リクエストやモデルインスタンスに基づいて動的にインラインを追加できます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_urls\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_urls</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_urls\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> の <code class=\"docutils literal notranslate\"><span class=\"pre\">get_urls</span></code> メソッドは URLconf と同じようにその ModelAdmin で使用する URL を返します。 そのため、 <a class=\"reference internal\" href=\"/ja/6.0/topics/http/urls/\"><span class=\"doc\">URL ディスパッチャ</span></a> で説明されているように、ビューの <code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite.admin_view()</span></code> ラッパーを使って拡張できます:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.template.response</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">TemplateResponse</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyModelAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_urls</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"n\">urls</span> <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">get_urls</span><span class=\"p\">()</span>\n        <span class=\"n\">my_urls</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;my_view/&quot;</span><span class=\"p\">,</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">admin_site</span><span class=\"o\">.</span><span class=\"n\">admin_view</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">my_view</span><span class=\"p\">))]</span>\n        <span class=\"k\">return</span> <span class=\"n\">my_urls</span> <span class=\"o\">+</span> <span class=\"n\">urls</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">):</span>\n        <span class=\"c1\"># ...</span>\n        <span class=\"n\">context</span> <span class=\"o\">=</span> <span class=\"nb\">dict</span><span class=\"p\">(</span>\n            <span class=\"c1\"># Include common variables for rendering the admin template.</span>\n            <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">admin_site</span><span class=\"o\">.</span><span class=\"n\">each_context</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">),</span>\n            <span class=\"c1\"># Anything else you want in the context...</span>\n            <span class=\"n\">key</span><span class=\"o\">=</span><span class=\"n\">value</span><span class=\"p\">,</span>\n        <span class=\"p\">)</span>\n        <span class=\"k\">return</span> <span class=\"n\">TemplateResponse</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"s2\">&quot;sometemplate.html&quot;</span><span class=\"p\">,</span> <span class=\"n\">context</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>admin のレイアウトを使用したい場合、<code class=\"docutils literal notranslate\"><span class=\"pre\">admin/base_site.html</span></code> を extend してください:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">extends</span> <span class=\"s2\">&quot;admin/base_site.html&quot;</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">block</span> <span class=\"nv\">content</span> <span class=\"cp\">%}</span>\n...\n<span class=\"cp\">{%</span> <span class=\"k\">endblock</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">self.my_view</span></code> 関数が <code class=\"docutils literal notranslate\"><span class=\"pre\">self.admin_site.admin_view</span></code> でラップされていることに注意してください。これは重要であり、次の2つのことを保証します:</p>\n<ol class=\"arabic simple\">\n<li><p>パーミッションチェックが実行され、アクティブなスタッフユーザーだけがビューにアクセスできるようにします。</p></li>\n<li><p><a class=\"reference internal\" href=\"/ja/6.0/topics/http/decorators/#django.views.decorators.cache.never_cache\" title=\"django.views.decorators.cache.never_cache\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.views.decorators.cache.never_cache()</span></code></a> デコレータはキャッシュを防ぐために適用され、返される情報が最新であることを保証します。</p></li>\n</ol>\n</aside>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p>カスタムパターンが通常の管理URLよりも <em>前に</em> 含まれていることに注意してください。管理URLのパターンは非常に許容範囲が広く、ほぼ何でも一致するため、通常はカスタムURLを組み込みのURLに前置したいと思うでしょう。</p>\n<p>この例では、 <code class=\"docutils literal notranslate\"><span class=\"pre\">my_view</span></code> は <code class=\"docutils literal notranslate\"><span class=\"pre\">/admin/myapp/mymodel/my_view/</span></code> にアクセスされます (管理画面の URL が <code class=\"docutils literal notranslate\"><span class=\"pre\">/admin/</span></code> に含まれていると仮定します)。</p>\n</aside>\n<p>ページがキャッシュ可能で、それでもパーミッションチェックを行いたい場合は、 <code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite.admin_view()</span></code> に <code class=\"docutils literal notranslate\"><span class=\"pre\">cacheable=True</span></code> 引数を渡します:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;my_view/&quot;</span><span class=\"p\">,</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">admin_site</span><span class=\"o\">.</span><span class=\"n\">admin_view</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">my_view</span><span class=\"p\">,</span> <span class=\"n\">cacheable</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">))</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> ビューは <code class=\"docutils literal notranslate\"><span class=\"pre\">model_admin</span></code> 属性を持ちます。その他の <code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code> ビューは <code class=\"docutils literal notranslate\"><span class=\"pre\">admin_site</span></code> 属性を持ちます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_form\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_form</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_form\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin の追加と変更のビューで使うための <a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code></a> クラスを返します。<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.add_view\" title=\"django.contrib.admin.ModelAdmin.add_view\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">add_view()</span></code></a> と <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.change_view\" title=\"django.contrib.admin.ModelAdmin.change_view\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">change_view()</span></code></a> を参照してください。</p>\n<p>基本の実装は <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/models/#django.forms.models.modelform_factory\" title=\"django.forms.models.modelform_factory\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">modelform_factory()</span></code></a> を使用して <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.form\" title=\"django.contrib.admin.ModelAdmin.form\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">form</span></code></a> をサブクラス化し、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.fields\" title=\"django.contrib.admin.ModelAdmin.fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">fields</span></code></a> や <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.exclude\" title=\"django.contrib.admin.ModelAdmin.exclude\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">exclude</span></code></a> といった属性によって修正されます。なので、例えばスーパーユーザーに対して追加的なフィールドを与えたい場合は、以下のように基本のフォームを変更できます:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyModelAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_form</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"k\">if</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">user</span><span class=\"o\">.</span><span class=\"n\">is_superuser</span><span class=\"p\">:</span>\n            <span class=\"n\">kwargs</span><span class=\"p\">[</span><span class=\"s2\">&quot;form&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">MySuperuserForm</span>\n        <span class=\"k\">return</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">get_form</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">)</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code></a> クラスを直接返すこともできます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_formsets_with_inlines\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_formsets_with_inlines</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_formsets_with_inlines\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin の追加や変更のビューで使用するための (<code class=\"docutils literal notranslate\"><span class=\"pre\">FormSet</span></code>, <a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin\" title=\"django.contrib.admin.InlineModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin</span></code></a>) ペアを生成します。</p>\n<p>たとえば、変更ビューのみで特定のインラインを表示したい場合、以下のように <code class=\"docutils literal notranslate\"><span class=\"pre\">get_formsets_with_inlines</span></code> をオーバーライドできます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyModelAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">inlines</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"n\">MyInline</span><span class=\"p\">,</span> <span class=\"n\">SomeOtherInline</span><span class=\"p\">]</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_formsets_with_inlines</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">):</span>\n        <span class=\"k\">for</span> <span class=\"n\">inline</span> <span class=\"ow\">in</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">get_inline_instances</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"p\">):</span>\n            <span class=\"c1\"># hide MyInline in the add view</span>\n            <span class=\"k\">if</span> <span class=\"ow\">not</span> <span class=\"nb\">isinstance</span><span class=\"p\">(</span><span class=\"n\">inline</span><span class=\"p\">,</span> <span class=\"n\">MyInline</span><span class=\"p\">)</span> <span class=\"ow\">or</span> <span class=\"n\">obj</span> <span class=\"ow\">is</span> <span class=\"ow\">not</span> <span class=\"kc\">None</span><span class=\"p\">:</span>\n                <span class=\"k\">yield</span> <span class=\"n\">inline</span><span class=\"o\">.</span><span class=\"n\">get_formset</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"p\">),</span> <span class=\"n\">inline</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.formfield_for_foreignkey\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">formfield_for_foreignkey</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">db_field</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.formfield_for_foreignkey\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> の <code class=\"docutils literal notranslate\"><span class=\"pre\">formfield_for_foreignkey</span></code> を使うと、ForignKey フィールドに対するデフォルトのフォームフィールドをオーバーライドできます。たとえば、ユーザーに基づいてこの ForeignKey フィールドに対するオブジェクトのサブセットを返すには:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyModelAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">formfield_for_foreignkey</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">db_field</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"k\">if</span> <span class=\"n\">db_field</span><span class=\"o\">.</span><span class=\"n\">name</span> <span class=\"o\">==</span> <span class=\"s2\">&quot;car&quot;</span><span class=\"p\">:</span>\n            <span class=\"n\">kwargs</span><span class=\"p\">[</span><span class=\"s2\">&quot;queryset&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">Car</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">owner</span><span class=\"o\">=</span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">user</span><span class=\"p\">)</span>\n        <span class=\"k\">return</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">formfield_for_foreignkey</span><span class=\"p\">(</span><span class=\"n\">db_field</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>これは、<code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> インスタンスを使って <code class=\"docutils literal notranslate\"><span class=\"pre\">Car</span></code> ForeignKey フィールドをフィルタし、特定の <code class=\"docutils literal notranslate\"><span class=\"pre\">User</span></code> インスタンスが所有する car のみを表示します。</p>\n<p>より複雑なフィルタを行うには、<code class=\"docutils literal notranslate\"><span class=\"pre\">ModelForm.__init__()</span></code> メソッドを使用することで、モデルの <code class=\"docutils literal notranslate\"><span class=\"pre\">instance</span></code> に基づいたフィルタを行うことができます (<a class=\"reference internal\" href=\"/ja/6.0/ref/forms/fields/#fields-which-handle-relationships\"><span class=\"std std-ref\">リレーションシップを扱うフィールド</span></a> を参照してください)。たとえば:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">CountryAdminForm</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">ModelForm</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"n\">args</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">)</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">fields</span><span class=\"p\">[</span><span class=\"s2\">&quot;capital&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span><span class=\"n\">queryset</span> <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">instance</span><span class=\"o\">.</span><span class=\"n\">cities</span><span class=\"o\">.</span><span class=\"n\">all</span><span class=\"p\">()</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">CountryAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">form</span> <span class=\"o\">=</span> <span class=\"n\">CountryAdminForm</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.formfield_for_manytomany\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">formfield_for_manytomany</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">db_field</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.formfield_for_manytomany\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">formfield_for_foreignkey</span></code> メソッドと同じように、<code class=\"docutils literal notranslate\"><span class=\"pre\">formfield_for_manytomany</span></code> メソッドをオーバーライドすると ManyToMany に対するデフォルトのフォームフィールドを変更できます。たとえば、あるオーナーは複数の car を所有でき、また car は複数のオーナーに所有されるとすると（多対多の関係です） <code class=\"docutils literal notranslate\"><span class=\"pre\">Car</span></code> のフィールドをフィルタして特定の <code class=\"docutils literal notranslate\"><span class=\"pre\">User</span></code> が所有する car だけを表示できます:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyModelAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">formfield_for_manytomany</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">db_field</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"k\">if</span> <span class=\"n\">db_field</span><span class=\"o\">.</span><span class=\"n\">name</span> <span class=\"o\">==</span> <span class=\"s2\">&quot;cars&quot;</span><span class=\"p\">:</span>\n            <span class=\"n\">kwargs</span><span class=\"p\">[</span><span class=\"s2\">&quot;queryset&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">Car</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">owner</span><span class=\"o\">=</span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">user</span><span class=\"p\">)</span>\n        <span class=\"k\">return</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">formfield_for_manytomany</span><span class=\"p\">(</span><span class=\"n\">db_field</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">)</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.formfield_for_choice_field\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">formfield_for_choice_field</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">db_field</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.formfield_for_choice_field\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">formfield_for_foreignkey</span></code> や <code class=\"docutils literal notranslate\"><span class=\"pre\">formfield_for_manytomany</span></code> メソッドと同じように、<code class=\"docutils literal notranslate\"><span class=\"pre\">formfield_for_choice_field</span></code> メソッドをオーバーライドすると選択肢として宣言されたフィールドに対するデフォルトのフォームフィールドを変更できます。 たとえば、スーパーユーザーと通常のスタッフで表示する選択肢を違うものにしたい場合、以下のように記述できます:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyModelAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">formfield_for_choice_field</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">db_field</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"k\">if</span> <span class=\"n\">db_field</span><span class=\"o\">.</span><span class=\"n\">name</span> <span class=\"o\">==</span> <span class=\"s2\">&quot;status&quot;</span><span class=\"p\">:</span>\n            <span class=\"n\">kwargs</span><span class=\"p\">[</span><span class=\"s2\">&quot;choices&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n                <span class=\"p\">(</span><span class=\"s2\">&quot;accepted&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Accepted&quot;</span><span class=\"p\">),</span>\n                <span class=\"p\">(</span><span class=\"s2\">&quot;denied&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Denied&quot;</span><span class=\"p\">),</span>\n            <span class=\"p\">]</span>\n            <span class=\"k\">if</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">user</span><span class=\"o\">.</span><span class=\"n\">is_superuser</span><span class=\"p\">:</span>\n                <span class=\"n\">kwargs</span><span class=\"p\">[</span><span class=\"s2\">&quot;choices&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span><span class=\"n\">append</span><span class=\"p\">((</span><span class=\"s2\">&quot;ready&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Ready for deployment&quot;</span><span class=\"p\">))</span>\n        <span class=\"k\">return</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">formfield_for_choice_field</span><span class=\"p\">(</span><span class=\"n\">db_field</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"admonition-choices-limitations admonition\">\n<p class=\"admonition-title\"><code class=\"docutils literal notranslate\"><span class=\"pre\">choices</span></code> の制限</p>\n<p>フォームフィールドにセットされたすべての <code class=\"docutils literal notranslate\"><span class=\"pre\">choices</span></code> 属性はそのフォームのフィールドのみに制限されます。モデル上の一致するフィールドに選択肢がセットされている場合、フォームに提供される選択肢はこの選択肢の有効なサブセットでなくてはなりません。そうでない場合、フォームの送信は、モデル自身の保存前のバリデーションで <a class=\"reference internal\" href=\"/ja/6.0/ref/exceptions/#django.core.exceptions.ValidationError\" title=\"django.core.exceptions.ValidationError\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">ValidationError</span></code></a> とともに失敗します。</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_changelist\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_changelist</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_changelist\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>リスト作成に使われる <code class=\"docutils literal notranslate\"><span class=\"pre\">Changelist</span></code> を返します。デフォルトでは、<code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.admin.views.main.ChangeList</span></code> が使われます。このクラスを継承することで、リスト作成の動作を変更できます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_changelist_form\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_changelist_form</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_changelist_form\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>チェンジリストページの <code class=\"docutils literal notranslate\"><span class=\"pre\">Formset</span></code> で使うための <a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code></a> クラスを返します。カスタムフォームを使うには、たとえば、次のようにします。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">forms</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyForm</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">ModelForm</span><span class=\"p\">):</span>\n    <span class=\"k\">pass</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyModelAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_changelist_form</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"n\">MyForm</span>\n</code></pre></div>\n<aside class=\"admonition-omit-the-meta-model-attribute admonition\">\n<p class=\"admonition-title\"><code class=\"docutils literal notranslate\"><span class=\"pre\">Meta.model</span></code> 属性を省略する</p>\n<p><a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code></a> で <code class=\"docutils literal notranslate\"><span class=\"pre\">Meta.model</span></code> 属性を定義した場合、<code class=\"docutils literal notranslate\"><span class=\"pre\">Meta.fields</span></code> 属性 (ないし <code class=\"docutils literal notranslate\"><span class=\"pre\">Meta.exclude</span></code> 属性) も定義する必要があります。しかし <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> はこの値を無視して、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.list_editable\" title=\"django.contrib.admin.ModelAdmin.list_editable\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.list_editable</span></code></a> 属性をオーバーライドします。最も簡単な解決方法は、<code class=\"docutils literal notranslate\"><span class=\"pre\">Meta.model</span></code> 属性を除外することです。これは <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> が使用する正しいモデルを提供するからです。</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_changelist_formset\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_changelist_formset</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_changelist_formset\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.list_editable\" title=\"django.contrib.admin.ModelAdmin.list_editable\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">list_editable</span></code></a> を使っている場合、チェンジリストページで使用するための <a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#model-formsets\"><span class=\"std std-ref\">ModelFormSet</span></a> クラスを返します。カスタムのフォームセットを使うには、たとえば、次のようにします。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.forms</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">BaseModelFormSet</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyAdminFormSet</span><span class=\"p\">(</span><span class=\"n\">BaseModelFormSet</span><span class=\"p\">):</span>\n    <span class=\"k\">pass</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyModelAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_changelist_formset</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"n\">kwargs</span><span class=\"p\">[</span><span class=\"s2\">&quot;formset&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">MyAdminFormSet</span>\n        <span class=\"k\">return</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">get_changelist_formset</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">)</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.lookup_allowed\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">lookup_allowed</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">lookup</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.lookup_allowed\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>チェンジリストページのオブジェクトは URL のクエリ文字列からルックアップしてフィルタすることができます。たとえば、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.list_filter\" title=\"django.contrib.admin.ModelAdmin.list_filter\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">list_filter</span></code></a> はその仕組みで動作します。ルックアップは <a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#django.db.models.query.QuerySet.filter\" title=\"django.db.models.query.QuerySet.filter\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">QuerySet.filter()</span></code></a> (例 <code class=\"docutils literal notranslate\"><span class=\"pre\">user__email=user&#64;example.com</span></code>) で使われているものと似ています。クエリ文字列のルックアップはユーザによって操作される可能性があるため、無許可のデータ漏洩を防ぐためにサニタイズする必要があります。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">lookup_allowed()</span></code> メソッドには、クエリ文字列 (<code class=\"docutils literal notranslate\"><span class=\"pre\">'user__email'</span></code> など)、対応する値 (<code class=\"docutils literal notranslate\"><span class=\"pre\">'user&#64;example.com'</span></code> など)、リクエストからのルックアップパスが渡され、パラメータを使用したチェンジリストの <code class=\"docutils literal notranslate\"><span class=\"pre\">QuerySet</span></code> のフィルタリングが許可されているかどうかを示す真偽値を返します。 <code class=\"docutils literal notranslate\"><span class=\"pre\">lookup_allowed()</span></code> が <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> を返した場合、 <code class=\"docutils literal notranslate\"><span class=\"pre\">DisallowedModelAdminLookup</span></code> (<a class=\"reference internal\" href=\"/ja/6.0/ref/exceptions/#django.core.exceptions.SuspiciousOperation\" title=\"django.core.exceptions.SuspiciousOperation\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">SuspiciousOperation</span></code></a> のサブクラス) が発生します。</p>\n<p>デフォルトでは、 <code class=\"docutils literal notranslate\"><span class=\"pre\">lookup_allowed()</span></code> はモデルのローカルフィールド、 <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.list_filter\" title=\"django.contrib.admin.ModelAdmin.list_filter\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">list_filter</span></code></a> で使用されるフィールドパス (ただし、 <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.get_list_filter\" title=\"django.contrib.admin.ModelAdmin.get_list_filter\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_list_filter()</span></code></a> からのパスは使用できません)、 <a class=\"reference internal\" href=\"/ja/6.0/ref/models/fields/#django.db.models.ForeignKey.limit_choices_to\" title=\"django.db.models.ForeignKey.limit_choices_to\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">limit_choices_to</span></code></a> が <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.raw_id_fields\" title=\"django.contrib.admin.ModelAdmin.raw_id_fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">raw_id_fields</span></code></a> で正しく機能するために必要なルックアップへのアクセスを許可します。</p>\n<p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code></a> サブクラスで許可されるルックアップをカスタマイズするには、このメソッドをオーバーライドします。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.has_view_permission\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">has_view_permission</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.has_view_permission\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> の閲覧が許可されている場合は <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> を、そうでなければ <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> を返します。obj が <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> の場合、この種類のオブジェクトの閲覧が一般的に許可されているかどうかを表すよう、<code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> か <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> を指定します (たとえば、<code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> は現在のユーザーがこの種類のすべてのオブジェクトを閲覧できないことを意味します)。</p>\n<p>デフォルトの実装では、ユーザーが &quot;change&quot; か &quot;view&quot; 権限を持っていれば <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> を返します。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.has_add_permission\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">has_add_permission</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.has_add_permission\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>オブジェクトの追加が許可されていれば <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> を、そうでなければ <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> を返します。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.has_change_permission\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">has_change_permission</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.has_change_permission\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> の編集が許可されている場合は <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> を、そうでなければ <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> を返します。<code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> が <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> の場合、この種類のオブジェクトの編集が一般的に許可されているかどうかを表すよう、<code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> か <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> を指定します (たとえば、<code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> は現在のユーザーがこの種類のすべてのオブジェクトを編集できないことを意味します)。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.has_delete_permission\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">has_delete_permission</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.has_delete_permission\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> の削除が許可されている場合は <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> を、そうでなければ <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> を返します。<code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> が <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> の場合、この種類のオブジェクトの削除が一般的に許可されているかどうかを表すよう、<code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> か <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> を指定します (たとえば、<code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> は現在のユーザーがこの種類のすべてのオブジェクトを削除できないことを意味します)。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.has_module_permission\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">has_module_permission</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.has_module_permission\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin のインデックスページでモジュールを表示し、そのモジュールへのアクセスを許可する場合は <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> を、そうでなければ <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> を返します。デフォルトでは <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/auth/#django.contrib.auth.models.User.has_module_perms\" title=\"django.contrib.auth.models.User.has_module_perms\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">User.has_module_perms()</span></code></a> を使用します。 オーバーライドしても閲覧、追加、変更、削除のアクセス権は制限しません。アクセス権の制限には <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.has_view_permission\" title=\"django.contrib.admin.ModelAdmin.has_view_permission\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">has_view_permission()</span></code></a>、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.has_add_permission\" title=\"django.contrib.admin.ModelAdmin.has_add_permission\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">has_add_permission()</span></code></a>、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.has_change_permission\" title=\"django.contrib.admin.ModelAdmin.has_change_permission\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">has_change_permission()</span></code></a>、<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.has_delete_permission\" title=\"django.contrib.admin.ModelAdmin.has_delete_permission\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">has_delete_permission()</span></code></a> を使用してください。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_queryset\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_queryset</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_queryset\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> の <code class=\"docutils literal notranslate\"><span class=\"pre\">get_queryset</span></code> メソッドは admin サイトで編集可能なモデルインスタンスのすべての <a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">QuerySet</span></code></a> を返します。このメソッドをオーバーライドする場面の 1 つは、ログイン中のユーザーが所有するオブジェクトを表示することです:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyModelAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_queryset</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">):</span>\n        <span class=\"n\">qs</span> <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">get_queryset</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">)</span>\n        <span class=\"k\">if</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">user</span><span class=\"o\">.</span><span class=\"n\">is_superuser</span><span class=\"p\">:</span>\n            <span class=\"k\">return</span> <span class=\"n\">qs</span>\n        <span class=\"k\">return</span> <span class=\"n\">qs</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">author</span><span class=\"o\">=</span><span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">user</span><span class=\"p\">)</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.message_user\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">message_user</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">message</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">level</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">messages.INFO</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">extra_tags</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">''</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">fail_silently</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.message_user\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/messages/#module-django.contrib.messages\" title=\"django.contrib.messages: Provides cookie- and session-based temporary message storage.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.messages</span></code></a> バックエンドを使ってユーザーにメッセージを送ります。<a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/admin/actions/#custom-admin-action\"><span class=\"std std-ref\">カスタムの ModelAdmin の例</span></a> を参照してください。</p>\n<p>キーワード引数を使うと、メッセージレベルを変更したり、余分な CSS タグを追加したり、 <code class=\"docutils literal notranslate\"><span class=\"pre\">contrib.message</span></code> フレームワークがインストールされていない場合にサイレントエラーにしたりすることができます。これらのキーワード引数は <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/messages/#django.contrib.messages.add_message\" title=\"django.contrib.messages.add_message\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.contrib.messages.add_message()</span></code></a> の引数と同じです。詳しくはその関数のドキュメントを参照してください。違いの一つは、レベルを整数/定数の他に文字列ラベルとして渡せる点です。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_paginator\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_paginator</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">queryset</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">per_page</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">orphans</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">0</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">allow_empty_first_page</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_paginator\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>このビューで使用する paginator のインスタンスを返します。デフォルトでは <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.paginator\" title=\"django.contrib.admin.ModelAdmin.paginator\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">paginator</span></code></a> のインスタンスを返します。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.response_add\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">response_add</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">post_url_continue</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.response_add\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.add_view\" title=\"django.contrib.admin.ModelAdmin.add_view\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">add_view()</span></code></a> ステージに対する <a class=\"reference internal\" href=\"/ja/6.0/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> を決定します。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">response_add</span></code> は、admin フォームが送信され、オブジェクトとすべての関係インスタンスが作成および保存された直後に呼び出されます。オーバーライドすることで、オブジェクトが作成された後のデフォルトの動作を変更できます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.response_change\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">response_change</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.response_change\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.change_view\" title=\"django.contrib.admin.ModelAdmin.change_view\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">change_view()</span></code></a> ステージに対する <a class=\"reference internal\" href=\"/ja/6.0/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> を決定します。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">response_change</span></code> は、admin フォームが送信され、オブジェクトとすべての関係インスタンスが保存された直後に呼び出されます。オーバーライドすることで、オブジェクトが変更された後のデフォルトの動作を変更できます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.response_delete\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">response_delete</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj_display</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj_id</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.response_delete\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.delete_view\" title=\"django.contrib.admin.ModelAdmin.delete_view\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">delete_view()</span></code></a> ステージに対する <a class=\"reference internal\" href=\"/ja/6.0/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> を決定します。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">response_delete</span></code> は、オブジェクトが削除された後に呼び出されます。オーバーライドすることで、オブジェクトが削除された後のデフォルトの動作を変更できます。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">obj_display</span></code> は削除されたオブジェクトの名前を表す文字列です。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">obj_id</span></code> は削除するオブジェクトを取得するために使用するシリアライズされた識別子です。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_formset_kwargs\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_formset_kwargs</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">inline</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">prefix</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_formset_kwargs\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>フォームセットのコンストラクタに渡されるキーワード引数をカスタマイズするためのフックです。たとえばフォームセットのフォームに <code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code> を渡すには:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyModelAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_formset_kwargs</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"p\">,</span> <span class=\"n\">inline</span><span class=\"p\">,</span> <span class=\"n\">prefix</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"p\">{</span>\n            <span class=\"o\">**</span><span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">get_formset_kwargs</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"p\">,</span> <span class=\"n\">inline</span><span class=\"p\">,</span> <span class=\"n\">prefix</span><span class=\"p\">),</span>\n            <span class=\"s2\">&quot;form_kwargs&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span><span class=\"s2\">&quot;request&quot;</span><span class=\"p\">:</span> <span class=\"n\">request</span><span class=\"p\">},</span>\n        <span class=\"p\">}</span>\n</code></pre></div>\n<p>また、フォームセットのフォームに <code class=\"docutils literal notranslate\"><span class=\"pre\">initial</span></code> を指定するためにも使用できます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_changeform_initial_data\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_changeform_initial_data</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_changeform_initial_data\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin の変更フォームの初期データに対するフックです。デフォルトでは、フィールドには <code class=\"docutils literal notranslate\"><span class=\"pre\">GET</span></code> パラメータで初期値が与えられます。たとえば、 <code class=\"docutils literal notranslate\"><span class=\"pre\">?name=initial_value</span></code> は <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> フィールドの初期値を <code class=\"docutils literal notranslate\"><span class=\"pre\">initial_value</span></code> にセットします。</p>\n<p>このメソッドは、<code class=\"docutils literal notranslate\"><span class=\"pre\">{'fieldname':</span> <span class=\"pre\">'fieldval'}</span></code> という形式のディクショナリを返します:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_changeform_initial_data</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"k\">return</span> <span class=\"p\">{</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;custom_initial_value&quot;</span><span class=\"p\">}</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.get_deleted_objects\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_deleted_objects</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">objs</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.get_deleted_objects\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.delete_view\" title=\"django.contrib.admin.ModelAdmin.delete_view\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">delete_view()</span></code></a> と &quot;delete selected&quot; <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/admin/actions/\"><span class=\"doc\">アクション</span></a> の削除処理をカスタマイズするフックです。</p>\n<p>引数 <code class=\"docutils literal notranslate\"><span class=\"pre\">objs</span></code> は削除するオブジェクト (<code class=\"docutils literal notranslate\"><span class=\"pre\">QuerySet</span></code> またはモデルインスタンスのリスト) の同型イテラブルで、 <code class=\"docutils literal notranslate\"><span class=\"pre\">request</span></code> は <a class=\"reference internal\" href=\"/ja/6.0/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code></a> です。</p>\n<p>このメソッドは <code class=\"docutils literal notranslate\"><span class=\"pre\">(deleted_objects,</span> <span class=\"pre\">model_count,</span> <span class=\"pre\">perms_needed,</span> <span class=\"pre\">protected)</span></code> の4タプルを返さなければなりません。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">deleted_objects</span></code> は削除されるすべてのオブジェクトを表す文字列のリストです。削除されるオブジェクトにリレーション先オブジェクトがある場合、リストはネストされ、それらのリレーション先オブジェクトも含まれます。リストはテンプレート内で <a class=\"reference internal\" href=\"/ja/6.0/ref/templates/builtins/#std-templatefilter-unordered_list\"><code class=\"xref std std-tfilter docutils literal notranslate\"><span class=\"pre\">unordered_list</span></code></a> フィルタを使ってフォーマットされます。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">model_count</span></code> は各モデルの <a class=\"reference internal\" href=\"/ja/6.0/ref/models/options/#django.db.models.Options.verbose_name_plural\" title=\"django.db.models.Options.verbose_name_plural\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">verbose_name_plural</span></code></a> と削除されるオブジェクトの数をマッピングした辞書です。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">perms_need</span></code> は <a class=\"reference internal\" href=\"/ja/6.0/ref/models/options/#django.db.models.Options.verbose_name\" title=\"django.db.models.Options.verbose_name\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">verbose_name</span></code></a> のセットで、ユーザが削除する権限を持っていないモデルです。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">protected</span></code> は削除できない保護されたリレーション先オブジェクトを表す文字列のリストです。このリストはテンプレートに表示されます。</p>\n</dd></dl>\n\n<section id=\"other-methods\">\n<h4>その他のメソッド<a class=\"heading-anchor\" href=\"#other-methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.add_view\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">add_view</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">form_url</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">''</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">extra_context</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.add_view\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>モデルインスタンスの追加ページに対する Django のビューです。以下のノートを参照してください。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.change_view\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">change_view</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">object_id</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">form_url</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">''</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">extra_context</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.change_view\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>モデルインスタンスの編集ページに対する Django のビューです。以下のノートを参照してください。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.changelist_view\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">changelist_view</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">extra_context</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.changelist_view\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>モデルインスタンスの変更リスト（チェンジリスト）およびアクションページに対する Django のビューです。以下のノートを参照してください。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.delete_view\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">delete_view</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">object_id</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">extra_context</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.delete_view\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>モデルインスタンスの削除の確認ページに対する Django のビューです。以下のノートを参照してください。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.ModelAdmin.history_view\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">ModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">history_view</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">object_id</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">extra_context</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.history_view\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>与えられたモデルのインスタンスに対する修正履歴を表示するページに対する Django のビューです。</p>\n</dd></dl>\n\n<p>前の節で詳しく説明したフック型の <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> メソッドとは異なり、これら 5 つのメソッドは、実際には admin アプリケーションの URL ディスパッチハンドラから Django ビューとして呼び出され、モデルインスタンスの CRUD 操作を扱うページをレンダリングするように設計されています。そのため、これらのメソッドを完全にオーバーライドすると、 admin アプリケーションの動作が大きく変わってしまいます。</p>\n<p>これらのメソッドをオーバーライドする一般的な理由の 1 つは、ビューをレンダリングするテンプレートに提供されるコンテキスト・データを補強することです。以下の例では、change ビューがオーバーライドされ、レンダリングされるテンプレートに、他の方法では利用できないマッピング・データが提供されます:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyModelAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"c1\"># A template for a very customized change view:</span>\n    <span class=\"n\">change_form_template</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;admin/myapp/extras/openstreetmap_change_form.html&quot;</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_osm_info</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"c1\"># ...</span>\n        <span class=\"k\">pass</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">change_view</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">object_id</span><span class=\"p\">,</span> <span class=\"n\">form_url</span><span class=\"o\">=</span><span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span> <span class=\"n\">extra_context</span><span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">):</span>\n        <span class=\"n\">extra_context</span> <span class=\"o\">=</span> <span class=\"n\">extra_context</span> <span class=\"ow\">or</span> <span class=\"p\">{}</span>\n        <span class=\"n\">extra_context</span><span class=\"p\">[</span><span class=\"s2\">&quot;osm_data&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">get_osm_info</span><span class=\"p\">()</span>\n        <span class=\"k\">return</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">change_view</span><span class=\"p\">(</span>\n            <span class=\"n\">request</span><span class=\"p\">,</span>\n            <span class=\"n\">object_id</span><span class=\"p\">,</span>\n            <span class=\"n\">form_url</span><span class=\"p\">,</span>\n            <span class=\"n\">extra_context</span><span class=\"o\">=</span><span class=\"n\">extra_context</span><span class=\"p\">,</span>\n        <span class=\"p\">)</span>\n</code></pre></div>\n<p>これらのビューは <a class=\"reference internal\" href=\"/ja/6.0/ref/template-response/#django.template.response.TemplateResponse\" title=\"django.template.response.TemplateResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TemplateResponse</span></code></a> インスタンスを返し、レンダリング前のレスポンスデータを簡単にカスタマイズできます。詳細は <a class=\"reference internal\" href=\"/ja/6.0/ref/template-response/\"><span class=\"doc\">TemplateResponse のドキュメント</span></a> を参照してください。</p>\n</section>\n</section>\n<section id=\"modeladmin-asset-definitions\">\n<span id=\"id1\"></span><h3><code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> アセットの定義<a class=\"heading-anchor\" href=\"#modeladmin-asset-definitions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>ビューを追加したり変更したりするために、CSS や JavaScript を追加したいことがあるかもしれません。そういうときには <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> の <code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code> インナークラスを使用します:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ArticleAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Media</span><span class=\"p\">:</span>\n        <span class=\"n\">css</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n            <span class=\"s2\">&quot;all&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s2\">&quot;my_styles.css&quot;</span><span class=\"p\">],</span>\n        <span class=\"p\">}</span>\n        <span class=\"n\">js</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;my_code.js&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/staticfiles/\"><span class=\"doc\">staticfiles アプリ</span></a> は、すべてのアセットのパスの前に <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_URL</span></code></a> (<a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_URL</span></code></a> が <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> の場合は <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-MEDIA_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MEDIA_URL</span></code></a>) を付与します。 <a class=\"reference internal\" href=\"/ja/6.0/topics/forms/media/#form-asset-paths\"><span class=\"std std-ref\">フォーム上の通常のアセット定義</span></a> と同じルールが適用されます。</p>\n<section id=\"jquery\">\n<span id=\"contrib-admin-jquery\"></span><h4>jQuery<a class=\"heading-anchor\" href=\"#jquery\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Django admin の JavaScript は <a class=\"reference external\" href=\"https://jquery.com\">jQuery</a> ライブラリを使用します。</p>\n<p>ユーザが提供するスクリプトやライブラリとの衝突を避けるため、 Django の jQuery (version 3.7.1) は <code class=\"docutils literal notranslate\"><span class=\"pre\">django.jQuery</span></code> という名前空間になっています。自分の admin JavaScript で jQuery を使いたい場合、別のコピーを入れなくても、 <code class=\"docutils literal notranslate\"><span class=\"pre\">django.jQuery</span></code> オブジェクトをチェンジリストやadd/edit ビューで使用できます。また、 <code class=\"docutils literal notranslate\"><span class=\"pre\">django.jQuery</span></code> に依存する独自の管理フォームやウィジェットは、 <a class=\"reference internal\" href=\"/ja/6.0/topics/forms/media/#assets-as-a-static-definition\"><span class=\"std std-ref\">フォーム メディア アセットの宣言</span></a> の際に <code class=\"docutils literal notranslate\"><span class=\"pre\">js=['admin/js/jquery.init.js',</span> <span class=\"pre\">…]</span></code> を指定しなければなりません。</p>\n<p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code></a> クラスはデフォルトで jQuery を要件とするので、特別なニーズがない限り jQuery をメディアリソースの <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> のリストに追加する必要はありません。たとえば、jQuery ライブラリがグローバルな名前空間を持つ必要がある場合 (たとえば、サードパーティの jQuery プラグインを使用する場合など)、もしくは jQuery の新しいバージョンを使いたい場合には、自分自身でコピーを用意する必要があります。</p>\n<p>Django には、非圧縮と 'minified' のバージョンのjQuery があり、それぞれ <code class=\"docutils literal notranslate\"><span class=\"pre\">jquery.js</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">jquery.min.js</span></code> となっています。</p>\n<p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code></a> と <a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin\" title=\"django.contrib.admin.InlineModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin</span></code></a> には、フォームやフォームセットのJavaScriptファイルへのパスを格納する <code class=\"docutils literal notranslate\"><span class=\"pre\">Media</span></code> オブジェクトのリストを返す <code class=\"docutils literal notranslate\"><span class=\"pre\">media</span></code> プロパティがあります。 <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a> が <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> の場合、 <code class=\"docutils literal notranslate\"><span class=\"pre\">jquery.js</span></code> を含む様々な JavaScript ファイルの圧縮されていないバージョンを返します。そうでない場合は、 &quot;minify&quot; されたバージョンを返します。</p>\n</section>\n</section>\n</section>\n<section id=\"inlinemodeladmin-objects\">\n<span id=\"admin-inlines\"></span><h2><code class=\"docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin</span></code> オブジェクト<a class=\"heading-anchor\" href=\"#inlinemodeladmin-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">InlineModelAdmin</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.TabularInline\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">TabularInline</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.TabularInline\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.StackedInline\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">StackedInline</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.StackedInline\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin インターフェースには、親モデルと同じページでモデルを編集する機能があります。この機能をインラインと呼びます。以下の 2 つのモデルがあるとしましょう:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Author</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">100</span><span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Book</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">author</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ForeignKey</span><span class=\"p\">(</span><span class=\"n\">Author</span><span class=\"p\">,</span> <span class=\"n\">on_delete</span><span class=\"o\">=</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CASCADE</span><span class=\"p\">)</span>\n    <span class=\"n\">title</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">100</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>author のページで、author が書いた book を編集できます。<code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin.inlines</span></code> 内でモデルに対するインラインを追加します:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">myapp.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Author</span><span class=\"p\">,</span> <span class=\"n\">Book</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">BookInline</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">TabularInline</span><span class=\"p\">):</span>\n    <span class=\"n\">model</span> <span class=\"o\">=</span> <span class=\"n\">Book</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">AuthorAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">inlines</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n        <span class=\"n\">BookInline</span><span class=\"p\">,</span>\n    <span class=\"p\">]</span>\n\n\n<span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">register</span><span class=\"p\">(</span><span class=\"n\">Author</span><span class=\"p\">,</span> <span class=\"n\">AuthorAdmin</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Django には、以下の通り <code class=\"docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin</span></code> のサブクラスが 2 つあります:</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.TabularInline\" title=\"django.contrib.admin.TabularInline\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">TabularInline</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.StackedInline\" title=\"django.contrib.admin.StackedInline\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">StackedInline</span></code></a></p></li>\n</ul>\n<p>この 2 つの違いは、単にレンダリングするために使われるテンプレートの違いです。</p>\n</dd></dl>\n\n<section id=\"inlinemodeladmin-options\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin</span></code> のオプション<a class=\"heading-anchor\" href=\"#inlinemodeladmin-options\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin</span></code> は <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> と多くの機能を共有しており、さらにいくつかの独自の機能を有しています (共有の機能は実際には <code class=\"docutils literal notranslate\"><span class=\"pre\">BaseModelAdmin</span></code> 基底クラスで定義されています)。共有の機能は下記です:</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin.form\" title=\"django.contrib.admin.InlineModelAdmin.form\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">form</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.fieldsets\" title=\"django.contrib.admin.ModelAdmin.fieldsets\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">fieldsets</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.fields\" title=\"django.contrib.admin.ModelAdmin.fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">fields</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.formfield_overrides\" title=\"django.contrib.admin.ModelAdmin.formfield_overrides\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">formfield_overrides</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.exclude\" title=\"django.contrib.admin.ModelAdmin.exclude\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">exclude</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.filter_horizontal\" title=\"django.contrib.admin.ModelAdmin.filter_horizontal\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">filter_horizontal</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.filter_vertical\" title=\"django.contrib.admin.ModelAdmin.filter_vertical\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">filter_vertical</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.ordering\" title=\"django.contrib.admin.ModelAdmin.ordering\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ordering</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.prepopulated_fields\" title=\"django.contrib.admin.ModelAdmin.prepopulated_fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">prepopulated_fields</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.get_fieldsets\" title=\"django.contrib.admin.ModelAdmin.get_fieldsets\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_fieldsets()</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.get_queryset\" title=\"django.contrib.admin.ModelAdmin.get_queryset\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_queryset()</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.radio_fields\" title=\"django.contrib.admin.ModelAdmin.radio_fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">radio_fields</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.readonly_fields\" title=\"django.contrib.admin.ModelAdmin.readonly_fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">readonly_fields</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.view_on_site\" title=\"django.contrib.admin.ModelAdmin.view_on_site\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">view_on_site</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.empty_value_display\" title=\"django.contrib.admin.ModelAdmin.empty_value_display\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">empty_value_display</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.autocomplete_fields\" title=\"django.contrib.admin.ModelAdmin.autocomplete_fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">autocomplete_fields</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin.raw_id_fields\" title=\"django.contrib.admin.InlineModelAdmin.raw_id_fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">raw_id_fields</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.formfield_for_choice_field\" title=\"django.contrib.admin.ModelAdmin.formfield_for_choice_field\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">formfield_for_choice_field()</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.formfield_for_foreignkey\" title=\"django.contrib.admin.ModelAdmin.formfield_for_foreignkey\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">formfield_for_foreignkey()</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.formfield_for_manytomany\" title=\"django.contrib.admin.ModelAdmin.formfield_for_manytomany\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">formfield_for_manytomany()</span></code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.has_module_permission\" title=\"django.contrib.admin.ModelAdmin.has_module_permission\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">has_module_permission()</span></code></a></p></li>\n</ul>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin</span></code> クラスは、以下を追加またはカスタマイズしています:</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin.model\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">InlineModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">model</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin.model\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>インラインが使用するモデルです。これは必須です。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin.fk_name\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">InlineModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">fk_name</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin.fk_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>モデルの外部キーの名前です。多くの場合、これは自動的に処理されますが、同じ親モデルに対して複数の外部キーがある場合には <code class=\"docutils literal notranslate\"><span class=\"pre\">fk_name</span></code> を明示的に指定する必要があります。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin.formset\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">InlineModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">formset</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin.formset\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>これはデフォルトでは <a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#django.forms.models.BaseInlineFormSet\" title=\"django.forms.models.BaseInlineFormSet\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">BaseInlineFormSet</span></code></a> です。自分自身のフォームセットを使用すると、カスタマイズの幅が広がります。インラインは <a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#model-formsets\"><span class=\"std std-ref\">モデル フォームセット</span></a> で構築されます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin.form\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">InlineModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">form</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin.form\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">form</span></code> に対する値で、デフォルトは <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code> です。これは、このインラインに対してフォームセットが生成される際に <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/models/#django.forms.models.inlineformset_factory\" title=\"django.forms.models.inlineformset_factory\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">inlineformset_factory()</span></code></a> に渡されるものです。</p>\n<p>例については <a class=\"reference internal\" href=\"#admin-custom-validation\"><span class=\"std std-ref\">カスタムのバリデーションを admin に追加する</span></a> を参照してください。</p>\n</dd></dl>\n\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">警告</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin</span></code> フォーム用のカスタムバリデーションを書く際には、親モデルの機能に依存したバリデーションを書くことに注意してください。親モデルがバリデーションに失敗した場合、 <a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#validation-on-modelform\"><span class=\"std std-ref\">ModelForm の検証 (バリデーション)</span></a> の警告に記述されているように、一貫性のない状態で放置される可能性があります。</p>\n</aside>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin.classes\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">InlineModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">classes</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin.classes\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>インラインでレンダリングされるフィールドセットに適用する追加のCSSクラスを含むリストまたはタプルです。デフォルトは <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> です。<a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.fieldsets\" title=\"django.contrib.admin.ModelAdmin.fieldsets\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">fieldsets</span></code></a> で設定されたクラスと同様に、<code class=\"docutils literal notranslate\"><span class=\"pre\">collapse</span></code> クラスが付けられたインラインは、展開可能なウィジェットを使用して初期状態で折りたたまれます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin.extra\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">InlineModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">extra</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin.extra\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>フォームセットが初期のフォームに加えて表示する追加的なフォームの数をコントロールします。デフォルトは 3 です。詳しくは <a class=\"reference internal\" href=\"/ja/6.0/topics/forms/formsets/\"><span class=\"doc\">フォームセットのドキュメント</span></a> を参照してください。</p>\n<p>JavaScript が有効なブラウザを使っているユーザーに対しては、&quot;1 つ追加&quot; のリンクが提供され、<code class=\"docutils literal notranslate\"><span class=\"pre\">extra</span></code> 引数の結果提供されるインラインに加えていくつでもインラインを追加できます。</p>\n<p>現在表示されているフォームの数が <code class=\"docutils literal notranslate\"><span class=\"pre\">max_num</span></code> を超えている場合、またはユーザーが JavaScript を有効にしていない場合、ダイナミックリンクは表示されません。</p>\n<p><a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin.get_extra\" title=\"django.contrib.admin.InlineModelAdmin.get_extra\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin.get_extra()</span></code></a> でも追加フォームの数をカスタマイズできます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin.max_num\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">InlineModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">max_num</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin.max_num\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>インラインに表示するフォームの最大数をコントロールします。オブジェクトの数と直接関係はありませんが、値が小さい場合には関係する可能性があります。詳しくは <a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#model-formsets-max-num\"><span class=\"std std-ref\">編集可能なオブジェクトの数を制限する</span></a> を参照してください。</p>\n<p><a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin.get_max_num\" title=\"django.contrib.admin.InlineModelAdmin.get_max_num\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin.get_max_num()</span></code></a> でも追加フォームの最大数をカスタマイズできます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin.min_num\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">InlineModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">min_num</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin.min_num\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>インラインに表示するフォームの最小数をコントロールします。詳しくは <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/models/#django.forms.models.modelformset_factory\" title=\"django.forms.models.modelformset_factory\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">modelformset_factory()</span></code></a> を参照してください。</p>\n<p><a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin.get_min_num\" title=\"django.contrib.admin.InlineModelAdmin.get_min_num\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin.get_min_num()</span></code></a> でも追加フォームの最小数をカスタマイズできます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin.raw_id_fields\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">InlineModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">raw_id_fields</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin.raw_id_fields\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>デフォルトでは、<code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> のフィールドに対して Django の admin はセレクトボックスのインターフェース (<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;select&gt;</span></code>) を使用します。ドロップダウン内に表示する関係インスタンスをすべて選択するオーバーヘッドから逃れたいこともあるでしょう。</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">raw_id_fields</span></code> は、<code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> や <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> に対する <code class=\"docutils literal notranslate\"><span class=\"pre\">Input</span></code> ウィジェットを適用したいフィールドのリストです:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">BookInline</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">TabularInline</span><span class=\"p\">):</span>\n    <span class=\"n\">model</span> <span class=\"o\">=</span> <span class=\"n\">Book</span>\n    <span class=\"n\">raw_id_fields</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;pages&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin.template\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">InlineModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">template</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin.template\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>ページ上でインラインをレンダリングするのに使われるテンプレートです。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin.verbose_name\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">InlineModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">verbose_name</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin.verbose_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>モデル内部の <code class=\"docutils literal notranslate\"><span class=\"pre\">Meta</span></code> クラスの <a class=\"reference internal\" href=\"/ja/6.0/ref/models/options/#django.db.models.Options.verbose_name\" title=\"django.db.models.Options.verbose_name\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">verbose_name</span></code></a> のオーバーライドです。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin.verbose_name_plural\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">InlineModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">verbose_name_plural</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin.verbose_name_plural\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>モデル内部の <code class=\"docutils literal notranslate\"><span class=\"pre\">Meta</span></code> クラスの <a class=\"reference internal\" href=\"/ja/6.0/ref/models/options/#django.db.models.Options.verbose_name_plural\" title=\"django.db.models.Options.verbose_name_plural\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">verbose_name_plural</span></code></a> をオーバーライドします。これが与えられず、 <a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin.verbose_name\" title=\"django.contrib.admin.InlineModelAdmin.verbose_name\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin.verbose_name</span></code></a> が定義されている場合、 Django は <a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin.verbose_name\" title=\"django.contrib.admin.InlineModelAdmin.verbose_name\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin.verbose_name</span></code></a> + <code class=\"docutils literal notranslate\"><span class=\"pre\">'s'</span></code> を使用します。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin.can_delete\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">InlineModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">can_delete</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin.can_delete\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>インライン内でインラインオブジェクトを削除可能にするかどうかを指定します。デフォルトは <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> です。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin.show_change_link\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">InlineModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">show_change_link</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin.show_change_link\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin 内で変更可能なインラインオブジェクトをが変更フォームへのリンクを持つかどうかを指定します。デフォルトは <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> です。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin.get_formset\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">InlineModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_formset</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin.get_formset\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin の追加/変更ビューで使用する <a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#django.forms.models.BaseInlineFormSet\" title=\"django.forms.models.BaseInlineFormSet\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">BaseInlineFormSet</span></code></a> クラスを返します。 <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> は編集対象の親オブジェクト、または新しい親オブジェクトを追加する場合は <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> です。 <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.get_formsets_with_inlines\" title=\"django.contrib.admin.ModelAdmin.get_formsets_with_inlines\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelAdmin.get_formsets_with_inlines</span></code></a> の例を参照してください。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin.get_extra\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">InlineModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_extra</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin.get_extra\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>使用する追加インラインフォームの数を返します。デフォルトでは、<a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin.extra\" title=\"django.contrib.admin.InlineModelAdmin.extra\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin.extra</span></code></a> 属性を返します。</p>\n<p>プログラムに従って追加インラインフォームの数を決めたい場合、このメソッドをオーバーライドしてください。たとえば、モデルインスタンス (キーワード引数の <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> で渡されています) に基づいて数を決められます:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">BinaryTreeAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">TabularInline</span><span class=\"p\">):</span>\n    <span class=\"n\">model</span> <span class=\"o\">=</span> <span class=\"n\">BinaryTree</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_extra</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"n\">extra</span> <span class=\"o\">=</span> <span class=\"mi\">2</span>\n        <span class=\"k\">if</span> <span class=\"n\">obj</span><span class=\"p\">:</span>\n            <span class=\"k\">return</span> <span class=\"n\">extra</span> <span class=\"o\">-</span> <span class=\"n\">obj</span><span class=\"o\">.</span><span class=\"n\">binarytree_set</span><span class=\"o\">.</span><span class=\"n\">count</span><span class=\"p\">()</span>\n        <span class=\"k\">return</span> <span class=\"n\">extra</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin.get_max_num\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">InlineModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_max_num</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin.get_max_num\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>使用する追加インラインフォームの最大数を返します。デフォルトでは、<a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin.max_num\" title=\"django.contrib.admin.InlineModelAdmin.max_num\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin.max_num</span></code></a> 属性を返します。</p>\n<p>プログラムに従ってインラインフォームの最大数を決めたい場合、このメソッドをオーバーライドしてください。たとえば、モデルインスタンス (キーワード引数の <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> で渡されています) に基づいて最大数を決められます:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">BinaryTreeAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">TabularInline</span><span class=\"p\">):</span>\n    <span class=\"n\">model</span> <span class=\"o\">=</span> <span class=\"n\">BinaryTree</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_max_num</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">request</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">kwargs</span><span class=\"p\">):</span>\n        <span class=\"n\">max_num</span> <span class=\"o\">=</span> <span class=\"mi\">10</span>\n        <span class=\"k\">if</span> <span class=\"n\">obj</span> <span class=\"ow\">and</span> <span class=\"n\">obj</span><span class=\"o\">.</span><span class=\"n\">parent</span><span class=\"p\">:</span>\n            <span class=\"k\">return</span> <span class=\"n\">max_num</span> <span class=\"o\">-</span> <span class=\"mi\">5</span>\n        <span class=\"k\">return</span> <span class=\"n\">max_num</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin.get_min_num\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">InlineModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_min_num</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">kwargs</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin.get_min_num\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>使用する追加インラインフォームの最小数を返します。デフォルトでは、<a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin.min_num\" title=\"django.contrib.admin.InlineModelAdmin.min_num\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin.min_num</span></code></a> 属性を返します。</p>\n<p>プログラムに従ってインラインフォームの最小数を決めたい場合、このメソッドをオーバーライドしてください。たとえば、モデルインスタンス (キーワード引数の <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> で渡されています) に基づいて最小数を決められます:</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin.has_add_permission\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">InlineModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">has_add_permission</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin.has_add_permission\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>インラインオブジェクトの追加が許可されている場合 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> を、そうでなければ <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> を返します。<code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> は編集される親オブジェクトか、新規追加の場合には <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> となります。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin.has_change_permission\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">InlineModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">has_change_permission</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin.has_change_permission\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>インラインオブジェクトの編集が許可されている場合 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> を、そうでなければ <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> を返します。<code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> は編集される親オブジェクトです。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.InlineModelAdmin.has_delete_permission\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">InlineModelAdmin.</span></span><span class=\"sig-name descname\"><span class=\"pre\">has_delete_permission</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">obj</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.InlineModelAdmin.has_delete_permission\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>インラインオブジェクトの削除が許可されている場合 <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> を、そうでなければ <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> を返します。<code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> は編集される親オブジェクトです。</p>\n</dd></dl>\n\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin</span></code> メソッドに渡される <code class=\"docutils literal notranslate\"><span class=\"pre\">obj</span></code> 引数は編集対象の親オブジェクト、または新しい親オブジェクトを追加する場合は <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> です。</p>\n</aside>\n</section>\n<section id=\"working-with-a-model-with-two-or-more-foreign-keys-to-the-same-parent-model\">\n<h3>同じ親モデルへの複数の外部キーを持つモデルを扱う<a class=\"heading-anchor\" href=\"#working-with-a-model-with-two-or-more-foreign-keys-to-the-same-parent-model\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>同じモデルに対する複数の外部キーを持つこともあり得ます。例として以下のモデルを見てみましょう:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Person</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">128</span><span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Friendship</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">to_person</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ForeignKey</span><span class=\"p\">(</span>\n        <span class=\"n\">Person</span><span class=\"p\">,</span> <span class=\"n\">on_delete</span><span class=\"o\">=</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CASCADE</span><span class=\"p\">,</span> <span class=\"n\">related_name</span><span class=\"o\">=</span><span class=\"s2\">&quot;friends&quot;</span>\n    <span class=\"p\">)</span>\n    <span class=\"n\">from_person</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ForeignKey</span><span class=\"p\">(</span>\n        <span class=\"n\">Person</span><span class=\"p\">,</span> <span class=\"n\">on_delete</span><span class=\"o\">=</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CASCADE</span><span class=\"p\">,</span> <span class=\"n\">related_name</span><span class=\"o\">=</span><span class=\"s2\">&quot;from_friends&quot;</span>\n    <span class=\"p\">)</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">Person</span></code> の admin の追加や変更ページでインラインを表示したい場合は、自動的に判別することができないため、外部キーを明示的に定義する必要があります:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">myapp.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Friendship</span><span class=\"p\">,</span> <span class=\"n\">Person</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">FriendshipInline</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">TabularInline</span><span class=\"p\">):</span>\n    <span class=\"n\">model</span> <span class=\"o\">=</span> <span class=\"n\">Friendship</span>\n    <span class=\"n\">fk_name</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;to_person&quot;</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">inlines</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n        <span class=\"n\">FriendshipInline</span><span class=\"p\">,</span>\n    <span class=\"p\">]</span>\n\n\n<span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">register</span><span class=\"p\">(</span><span class=\"n\">Person</span><span class=\"p\">,</span> <span class=\"n\">PersonAdmin</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"working-with-many-to-many-models\">\n<h3>多対多のモデルを扱う<a class=\"heading-anchor\" href=\"#working-with-many-to-many-models\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>デフォルトでは、多対多のリレーションに対する管理ウィジェットは、実際に <a class=\"reference internal\" href=\"/ja/6.0/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code></a> への参照を含むモデルに表示されます。 <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> の定義に応じて、モデル内の各多対多フィールドは標準のHTML <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;select</span> <span class=\"pre\">multiple&gt;</span></code>, 水平または垂直フィルタ、または <code class=\"docutils literal notranslate\"><span class=\"pre\">raw_id_fields</span></code> ウィジェットによって表されます。しかし、これらのウィジェットをインラインで置き換えることもできます。</p>\n<p>次のようなモデルがあるとします:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Person</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">128</span><span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Group</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">128</span><span class=\"p\">)</span>\n    <span class=\"n\">members</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ManyToManyField</span><span class=\"p\">(</span><span class=\"n\">Person</span><span class=\"p\">,</span> <span class=\"n\">related_name</span><span class=\"o\">=</span><span class=\"s2\">&quot;groups&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>インラインを使用して多対多のリレーションを表示したい場合、リレーションシップに <code class=\"docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin</span></code> オブジェクトを定義することで表示できます:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">myapp.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Group</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MembershipInline</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">TabularInline</span><span class=\"p\">):</span>\n    <span class=\"n\">model</span> <span class=\"o\">=</span> <span class=\"n\">Group</span><span class=\"o\">.</span><span class=\"n\">members</span><span class=\"o\">.</span><span class=\"n\">through</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">GroupAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">inlines</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n        <span class=\"n\">MembershipInline</span><span class=\"p\">,</span>\n    <span class=\"p\">]</span>\n    <span class=\"n\">exclude</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;members&quot;</span><span class=\"p\">]</span>\n\n\n<span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">register</span><span class=\"p\">(</span><span class=\"n\">Group</span><span class=\"p\">,</span> <span class=\"n\">GroupAdmin</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>この例で注目すべき点は2つです。</p>\n<p>まず、 <code class=\"docutils literal notranslate\"><span class=\"pre\">MembershipInline</span></code> クラスは <code class=\"docutils literal notranslate\"><span class=\"pre\">Group.members.through</span></code> を参照しています。 <code class=\"docutils literal notranslate\"><span class=\"pre\">through</span></code> 属性は多対多のリレーションを管理するモデルへの参照です。このモデルは、多対多のフィールドを定義したときに Django が自動的に作成します。</p>\n<p>次に、 <code class=\"docutils literal notranslate\"><span class=\"pre\">GroupAdmin</span></code> は手動で <code class=\"docutils literal notranslate\"><span class=\"pre\">members</span></code> フィールドを除外する必要があります。Django は多対多のフィールドの管理ウィジェットを、リレーションを定義するモデル (この場合は <code class=\"docutils literal notranslate\"><span class=\"pre\">Group</span></code>) 上に表示します。インラインモデルを使って多対多のリレーションを表現したい場合は、 Django の admin に、このウィジェットを <em>表示しない</em> ように指示しなければなりません。</p>\n<p>このテクニックを使う場合、 <a class=\"reference internal\" href=\"/ja/6.0/ref/signals/#django.db.models.signals.m2m_changed\" title=\"django.db.models.signals.m2m_changed\"><code class=\"xref py py-data docutils literal notranslate\"><span class=\"pre\">m2m_changed</span></code></a> シグナルはトリガーされないことに注意してください。これは、admin にとっては <code class=\"docutils literal notranslate\"><span class=\"pre\">through</span></code> は多対多のリレーションではなく、2つの外部キーフィールドを持つモデルに過ぎないからです。</p>\n<p>その他の点では <code class=\"docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin</span></code> は他のものと全く同じです。通常の <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> プロパティを使用して外観をカスタマイズできます。</p>\n</section>\n<section id=\"working-with-many-to-many-intermediary-models\">\n<h3>多対多の中間モデルとともに使う<a class=\"heading-anchor\" href=\"#working-with-many-to-many-intermediary-models\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><a class=\"reference internal\" href=\"/ja/6.0/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code></a> の <code class=\"docutils literal notranslate\"><span class=\"pre\">through</span></code> 引数で中間モデルを指定した場合、管理画面はデフォルトではウィジェットを表示しません。これは、その中間モデルの各インスタンスは、単一のウィジェットで表示できる以上の情報を必要とし、複数のウィジェットに必要なレイアウトは中間モデルによって異なるからです。</p>\n<p>しかし、インラインで情報を編集できるようにしたいと思うでしょう。幸いなことに、インライン admin モデルでこれを実現できます。次のようなモデルがあるとします:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Person</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">128</span><span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Group</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">128</span><span class=\"p\">)</span>\n    <span class=\"n\">members</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ManyToManyField</span><span class=\"p\">(</span><span class=\"n\">Person</span><span class=\"p\">,</span> <span class=\"n\">through</span><span class=\"o\">=</span><span class=\"s2\">&quot;Membership&quot;</span><span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Membership</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">person</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ForeignKey</span><span class=\"p\">(</span><span class=\"n\">Person</span><span class=\"p\">,</span> <span class=\"n\">on_delete</span><span class=\"o\">=</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CASCADE</span><span class=\"p\">)</span>\n    <span class=\"n\">group</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ForeignKey</span><span class=\"p\">(</span><span class=\"n\">Group</span><span class=\"p\">,</span> <span class=\"n\">on_delete</span><span class=\"o\">=</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CASCADE</span><span class=\"p\">)</span>\n    <span class=\"n\">date_joined</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">DateField</span><span class=\"p\">()</span>\n    <span class=\"n\">invite_reason</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">64</span><span class=\"p\">)</span>\n\n    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Meta</span><span class=\"p\">:</span>\n        <span class=\"n\">constraints</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n            <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">UniqueConstraint</span><span class=\"p\">(</span>\n                <span class=\"n\">fields</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;person&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;group&quot;</span><span class=\"p\">],</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;unique_person_group&quot;</span>\n            <span class=\"p\">)</span>\n        <span class=\"p\">]</span>\n</code></pre></div>\n<p>この中間モデルを管理画面に表示するための最初のステップは <code class=\"docutils literal notranslate\"><span class=\"pre\">Membership</span></code> モデルのインラインクラスを定義することです:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MembershipInline</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">TabularInline</span><span class=\"p\">):</span>\n    <span class=\"n\">model</span> <span class=\"o\">=</span> <span class=\"n\">Membership</span>\n    <span class=\"n\">extra</span> <span class=\"o\">=</span> <span class=\"mi\">1</span>\n</code></pre></div>\n<p>この例では <code class=\"docutils literal notranslate\"><span class=\"pre\">Membership</span></code> モデルにデフォルトの <code class=\"docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin</span></code> の値を使用し、追加の追加フォームを 1 つに制限しています。これは <code class=\"docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin</span></code> クラスで利用可能なオプションを使ってカスタマイズできます。</p>\n<p>次に <code class=\"docutils literal notranslate\"><span class=\"pre\">Person</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">Group</span></code> モデルの管理ビューを作成します:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">inlines</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"n\">MembershipInline</span><span class=\"p\">]</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">GroupAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">inlines</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"n\">MembershipInline</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>最後に、 <code class=\"docutils literal notranslate\"><span class=\"pre\">Person</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">Group</span></code> のモデルを管理サイトに登録します:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">register</span><span class=\"p\">(</span><span class=\"n\">Person</span><span class=\"p\">,</span> <span class=\"n\">PersonAdmin</span><span class=\"p\">)</span>\n<span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">register</span><span class=\"p\">(</span><span class=\"n\">Group</span><span class=\"p\">,</span> <span class=\"n\">GroupAdmin</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>これであなたの管理サイトは <code class=\"docutils literal notranslate\"><span class=\"pre\">Person</span></code> または <code class=\"docutils literal notranslate\"><span class=\"pre\">Group</span></code> の詳細ページから <code class=\"docutils literal notranslate\"><span class=\"pre\">Membership</span></code> オブジェクトをインラインで編集できるように設定されました。</p>\n</section>\n<section id=\"using-generic-relations-as-an-inline\">\n<span id=\"id3\"></span><h3>ジェネリックリレーションをインラインとして使う<a class=\"heading-anchor\" href=\"#using-generic-relations-as-an-inline\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>ジェネリックリレーションを定義されたオブジェクトでインラインを使用することもできます。以下のようなモデルがあるとします:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.contenttypes.fields</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">GenericForeignKey</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.contenttypes.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">ContentType</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Image</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">image</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ImageField</span><span class=\"p\">(</span><span class=\"n\">upload_to</span><span class=\"o\">=</span><span class=\"s2\">&quot;images&quot;</span><span class=\"p\">)</span>\n    <span class=\"n\">content_type</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ForeignKey</span><span class=\"p\">(</span><span class=\"n\">ContentType</span><span class=\"p\">,</span> <span class=\"n\">on_delete</span><span class=\"o\">=</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CASCADE</span><span class=\"p\">)</span>\n    <span class=\"n\">object_id</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">PositiveIntegerField</span><span class=\"p\">()</span>\n    <span class=\"n\">content_object</span> <span class=\"o\">=</span> <span class=\"n\">GenericForeignKey</span><span class=\"p\">(</span><span class=\"s2\">&quot;content_type&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;object_id&quot;</span><span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Product</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">100</span><span class=\"p\">)</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">Product</span></code> の追加/変更ビューで <code class=\"docutils literal notranslate\"><span class=\"pre\">Image</span></code> インスタンスの編集や作成を可能にしたい場合、 <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/contenttypes/#module-django.contrib.contenttypes.admin\" title=\"django.contrib.contenttypes.admin\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">admin</span></code></a> によって提供される <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/contenttypes/#django.contrib.contenttypes.admin.GenericTabularInline\" title=\"django.contrib.contenttypes.admin.GenericTabularInline\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">GenericTabularInline</span></code></a> や <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/contenttypes/#django.contrib.contenttypes.admin.GenericStackedInline\" title=\"django.contrib.contenttypes.admin.GenericStackedInline\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">GenericStackedInline</span></code></a> （どちらも <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/contenttypes/#django.contrib.contenttypes.admin.GenericInlineModelAdmin\" title=\"django.contrib.contenttypes.admin.GenericInlineModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">GenericInlineModelAdmin</span></code></a> のサブクラス）を使用できます。これらはそれぞれ、インラインオブジェクトを表すフォームのための tabular 形式と stack 形式のビジュアルレイアウトを実装しており、ジェネリックでないものと同様です。これらは他のインラインと全く同じように動作します。この例のアプリのための <code class=\"docutils literal notranslate\"><span class=\"pre\">admin.py</span></code> では次のようにします:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.contenttypes.admin</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">GenericTabularInline</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">myapp.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Image</span><span class=\"p\">,</span> <span class=\"n\">Product</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ImageInline</span><span class=\"p\">(</span><span class=\"n\">GenericTabularInline</span><span class=\"p\">):</span>\n    <span class=\"n\">model</span> <span class=\"o\">=</span> <span class=\"n\">Image</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ProductAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">inlines</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n        <span class=\"n\">ImageInline</span><span class=\"p\">,</span>\n    <span class=\"p\">]</span>\n\n\n<span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">register</span><span class=\"p\">(</span><span class=\"n\">Product</span><span class=\"p\">,</span> <span class=\"n\">ProductAdmin</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>詳しくは <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/contenttypes/\"><span class=\"doc\">contenttypes のドキュメント</span></a> を参照してください。</p>\n</section>\n</section>\n<section id=\"adding-custom-validation-to-the-admin\">\n<span id=\"admin-custom-validation\"></span><h2>カスタムのバリデーションを admin に追加する<a class=\"heading-anchor\" href=\"#adding-custom-validation-to-the-admin\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>The admin uses <a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code></a>. To add custom validation,\nprovide your own <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ArticleForm</span><span class=\"p\">(</span><span class=\"n\">forms</span><span class=\"o\">.</span><span class=\"n\">ModelForm</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">clean_name</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"c1\"># do something that validates your data</span>\n        <span class=\"k\">return</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">cleaned_data</span><span class=\"p\">[</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>Then configure the <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code></a> to use the form:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ArticleAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">form</span> <span class=\"o\">=</span> <span class=\"n\">ArticleForm</span>\n</code></pre></div>\n<p>Or configure an <a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin\" title=\"django.contrib.admin.InlineModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">InlineModelAdmin</span></code></a> to use the form:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ArticleInline</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">TabularInline</span><span class=\"p\">):</span>\n    <span class=\"n\">model</span> <span class=\"o\">=</span> <span class=\"n\">Article</span>\n    <span class=\"n\">form</span> <span class=\"o\">=</span> <span class=\"n\">ArticleForm</span>\n</code></pre></div>\n<p>It is important that you use a <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelForm</span></code>; otherwise things can break. See\nthe <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/\"><span class=\"doc\">forms</span></a> documentation on <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/validation/\"><span class=\"doc\">custom validation</span></a> and, more specifically, the\n<a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#overriding-modelform-clean-method\"><span class=\"std std-ref\">model form validation notes</span></a> for more\ninformation.</p>\n</section>\n<section id=\"overriding-admin-templates\">\n<span id=\"admin-overriding-templates\"></span><h2>admin テンプレートをオーバーライドする<a class=\"heading-anchor\" href=\"#overriding-admin-templates\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>admin モジュールが admin サイトの様々なページを生成するために使用するテンプレートの多くはオーバーライドできます。特定のアプリや特定のモデルのためにこれらのテンプレートの一部をオーバーライドすることもできます。</p>\n<section id=\"set-up-your-project-s-admin-template-directories\">\n<h3>Set up your project's admin template directories<a class=\"heading-anchor\" href=\"#set-up-your-project-s-admin-template-directories\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>admin テンプレートファイルは <a class=\"extlink-source reference external\" href=\"https://github.com/django/django/blob/stable/6.0.x/django/contrib/admin/templates/admin\">django/contrib/admin/templates/admin</a> ディレクトリにあります。</p>\n<p>そのうちの一つ以上を上書きするには、まずプロジェクトの <code class=\"docutils literal notranslate\"><span class=\"pre\">templates</span></code> ディレクトリに <code class=\"docutils literal notranslate\"><span class=\"pre\">admin</span></code> ディレクトリを作成してください。これは <code class=\"docutils literal notranslate\"><span class=\"pre\">DjangoTemplates</span></code> バックエンドの <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-TEMPLATES-DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DIRS</span></code></a> オプションの <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">TEMPLATES</span></code></a> 設定で指定したディレクトリのどれでもかまいません。 <code class=\"docutils literal notranslate\"><span class=\"pre\">'loaders'</span></code> オプションをカスタマイズしている場合は、 <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.template.loaders.app_directories.Loader'</span></code> の前に <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.template.loaders.filesystem.Loader'</span></code> が表示されていることを確認してください。そうすれば、 <a class=\"reference internal\" href=\"#module-django.contrib.admin\" title=\"django.contrib.admin: Django's admin site.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.admin</span></code></a> でインクルードされているテンプレートよりも先に、カスタムテンプレートがテンプレート読み込みシステムによって検出されます。</p>\n<p>この <code class=\"docutils literal notranslate\"><span class=\"pre\">admin</span></code> ディレクトリの中に、アプリに対応した名前のサブディレクトリを作成します。これらのアプリのサブディレクトリの中に、モデルに対応した名前のサブディレクトリを作成します。 大文字と小文字を区別するファイルシステム上でアプリを実行する場合は、ディレクトリ名をすべて小文字にしてください、adminアプリはディレクトリを探すときにモデル名を小文字にします。</p>\n<p>特定のアプリの管理テンプレートを上書きするには、 <a class=\"extlink-source reference external\" href=\"https://github.com/django/django/blob/stable/6.0.x/django/contrib/admin/templates/admin\">django/contrib/admin/templates/admin</a> ディレクトリからテンプレートをコピーして編集し、先ほど作成したディレクトリのいずれかに保存します。</p>\n<p>たとえば、<code class=\"docutils literal notranslate\"><span class=\"pre\">my_app</span></code> という名前のアプリのすべてのモデルのチェンジリストビューにツールを追加したい場合、<code class=\"docutils literal notranslate\"><span class=\"pre\">contrib/admin/templates/admin/change_list.html</span></code> をプロジェクトの <code class=\"docutils literal notranslate\"><span class=\"pre\">templates/admin/my_app/</span></code> ディレクトリにコピーし、必要な変更を加えます。</p>\n<p>もし、 &quot;Page&quot; という特定のモデルだけのチェンジリストビューにツールを追加したい場合、同じファイルをプロジェクトの <code class=\"docutils literal notranslate\"><span class=\"pre\">templates/admin/my_app/page</span></code> ディレクトリにコピーします。</p>\n</section>\n<section id=\"overriding-vs-replacing-an-admin-template\">\n<h3>admin テンプレートをオーバーライドするか、それとも置き換えるか<a class=\"heading-anchor\" href=\"#overriding-vs-replacing-an-admin-template\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>管理画面のテンプレートはモジュール化されているため、通常はテンプレート全体を置き換える必要はありません。ほとんどの場合、変更する必要があるテンプレートのセクションだけをオーバーライドする方がよいでしょう。</p>\n<p>上記の例の続きとして、<code class=\"docutils literal notranslate\"><span class=\"pre\">Page</span></code> モデルの <code class=\"docutils literal notranslate\"><span class=\"pre\">History</span></code> ツールの隣に新しいリンクを追加したいとします。 <code class=\"docutils literal notranslate\"><span class=\"pre\">change_form.html</span></code> を見ると、 <code class=\"docutils literal notranslate\"><span class=\"pre\">object-tools-items</span></code> ブロックをオーバーライドするだけでよいことがわかります。そこで、以下に新しい <code class=\"docutils literal notranslate\"><span class=\"pre\">change_form.html</span></code> の例を示します:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">extends</span> <span class=\"s2\">&quot;admin/change_form.html&quot;</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">i18n</span> <span class=\"nv\">admin_urls</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">block</span> <span class=\"nv\">object-tools-items</span> <span class=\"cp\">%}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n        <span class=\"p\">&lt;</span><span class=\"nt\">a</span> <span class=\"na\">href</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">url</span> <span class=\"nv\">opts</span><span class=\"o\">|</span><span class=\"nf\">admin_urlname</span><span class=\"s1\">:&#39;history&#39;</span> <span class=\"nv\">original.pk</span><span class=\"o\">|</span><span class=\"nf\">admin_urlquote</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;historylink&quot;</span><span class=\"p\">&gt;</span><span class=\"cp\">{%</span> <span class=\"k\">translate</span> <span class=\"s2\">&quot;History&quot;</span> <span class=\"cp\">%}</span><span class=\"p\">&lt;/</span><span class=\"nt\">a</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n        <span class=\"p\">&lt;</span><span class=\"nt\">a</span> <span class=\"na\">href</span><span class=\"o\">=</span><span class=\"s\">&quot;mylink/&quot;</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;historylink&quot;</span><span class=\"p\">&gt;</span>My Link<span class=\"p\">&lt;/</span><span class=\"nt\">a</span><span class=\"p\">&gt;</span>\n    <span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n    <span class=\"cp\">{%</span> <span class=\"k\">if</span> <span class=\"nv\">has_absolute_url</span> <span class=\"cp\">%}</span>\n        <span class=\"p\">&lt;</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n            <span class=\"p\">&lt;</span><span class=\"nt\">a</span> <span class=\"na\">href</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">url</span> <span class=\"s1\">&#39;admin:view_on_site&#39;</span> <span class=\"nv\">content_type_id</span> <span class=\"nv\">original.pk</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span> <span class=\"na\">class</span><span class=\"o\">=</span><span class=\"s\">&quot;viewsitelink&quot;</span><span class=\"p\">&gt;</span><span class=\"cp\">{%</span> <span class=\"k\">translate</span> <span class=\"s2\">&quot;View on site&quot;</span> <span class=\"cp\">%}</span><span class=\"p\">&lt;/</span><span class=\"nt\">a</span><span class=\"p\">&gt;</span>\n        <span class=\"p\">&lt;/</span><span class=\"nt\">li</span><span class=\"p\">&gt;</span>\n    <span class=\"cp\">{%</span> <span class=\"k\">endif</span> <span class=\"cp\">%}</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endblock</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>これで完了です！このファイルを <code class=\"docutils literal notranslate\"><span class=\"pre\">templates/admin/my_app</span></code> ディレクトリに置くと、my_app 内のすべてのモデルの変更フォームにリンクが表示されます。</p>\n</section>\n<section id=\"templates-which-may-be-overridden-per-app-or-model\">\n<span id=\"admin-templates-overridden-per-app-or-model\"></span><h3>アプリやモデルごとにオーバーライド可能なテンプレート<a class=\"heading-anchor\" href=\"#templates-which-may-be-overridden-per-app-or-model\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">contrib/admin/templates/admin</span></code> にある全てのテンプレートがアプリやモデルごとにオーバーライドできるわけではありません。以下のものは可能です:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">actions.html</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">app_index.html</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">change_form.html</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">change_form_object_tools.html</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">change_list.html</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">change_list_object_tools.html</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">change_list_results.html</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">date_hierarchy.html</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">delete_confirmation.html</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">object_history.html</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">pagination.html</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">popup_response.html</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">prepopulated_fields_js.html</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">search_form.html</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">submit_line.html</span></code></p></li>\n</ul>\n<p>この方法でオーバーライドできないテンプレートについては、 <code class=\"docutils literal notranslate\"><span class=\"pre\">templates/admin</span></code> ディレクトリに新しいバージョンを置くことで、プロジェクト全体でオーバーライドできます。これは特に独自の404ページや500ページを作成するのに便利です。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">change_list_results.html</span></code> のようないくつかの管理用テンプレートはカスタムインクルージョンタグのレンダリングに使用されます。これらはオーバーライドできますが、そのような場合、おそらく問題のタグの独自のバージョンを作成し、別の名前を付けた方が良いでしょう。そうすれば、選択的に使用できます。</p>\n</aside>\n</section>\n<section id=\"root-and-login-templates\">\n<h3>ルートテンプレートとログインテンプレート<a class=\"heading-anchor\" href=\"#root-and-login-templates\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>インデックス、ログイン、ログアウトのテンプレートを変更したい場合は、独自の <code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code> インスタンス（下記参照）を作成し、 <a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite.index_template\" title=\"django.contrib.admin.AdminSite.index_template\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">AdminSite.index_template</span></code></a> 、 <a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite.login_template\" title=\"django.contrib.admin.AdminSite.login_template\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">AdminSite.login_template</span></code></a> 、 <a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite.logout_template\" title=\"django.contrib.admin.AdminSite.logout_template\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">AdminSite.logout_template</span></code></a> プロパティを変更した方が良いでしょう。</p>\n</section>\n</section>\n<section id=\"theming-support\">\n<span id=\"admin-theming\"></span><h2>テーマのサポート<a class=\"heading-anchor\" href=\"#theming-support\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>管理画面では、CSS 変数を使用して色とフォントを定義します。これにより、多くの個別の CSS ルールを上書きすることなくテーマを変更できます。たとえば、青の代わりに紫を使うには、以下のような <code class=\"docutils literal notranslate\"><span class=\"pre\">admin/base.html</span></code> テンプレートをプロジェクトに追加します。</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">extends</span> <span class=\"s1\">&#39;admin/base.html&#39;</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">block</span> <span class=\"nv\">extrastyle</span> <span class=\"cp\">%}{{</span> <span class=\"nb\">block</span><span class=\"nv\">.super</span> <span class=\"cp\">}}</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">style</span><span class=\"p\">&gt;</span>\n<span class=\"nt\">html</span><span class=\"o\">[</span><span class=\"nt\">data-theme</span><span class=\"o\">=</span><span class=\"s2\">&quot;light&quot;</span><span class=\"o\">],</span><span class=\"w\"> </span><span class=\"p\">:</span><span class=\"nd\">root</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nv\">--primary</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"mh\">#9774d5</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"nv\">--secondary</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"mh\">#785cab</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"nv\">--link-fg</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"mh\">#7c449b</span><span class=\"p\">;</span>\n<span class=\"w\">  </span><span class=\"nv\">--link-selected-fg</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"mh\">#8f5bb2</span><span class=\"p\">;</span>\n<span class=\"p\">}</span>\n<span class=\"p\">&lt;/</span><span class=\"nt\">style</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endblock</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n<p>CSS 変数のリストは <a class=\"extlink-source reference external\" href=\"https://github.com/django/django/blob/stable/6.0.x/django/contrib/admin/static/admin/css/base.css\">django/contrib/admin/static/admin/css/base.css</a> で定義されています。</p>\n<p><a class=\"reference external\" href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/&#64;media/prefers-color-scheme\">prefers-color-scheme</a> メディアクエリを尊重したダークモード変数は <a class=\"extlink-source reference external\" href=\"https://github.com/django/django/blob/stable/6.0.x/django/contrib/admin/static/admin/css/dark_mode.css\">django/contrib/admin/static/admin/css/dark_mode.css</a> で定義されています。これは <code class=\"docutils literal notranslate\"><span class=\"pre\">{%</span> <span class=\"pre\">block</span> <span class=\"pre\">dark-mode-vars</span> <span class=\"pre\">%}</span></code> のドキュメントにリンクされています。</p>\n</section>\n<section id=\"extrabody-block\">\n<span id=\"extrabody\"></span><h2><code class=\"docutils literal notranslate\"><span class=\"pre\">extrabody</span></code> ブロック<a class=\"heading-anchor\" href=\"#extrabody-block\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<aside class=\"version-note version-added\" data-version=\"5.2\">\n<p class=\"version-note-title\">New in Django 5.2</p></aside>\n<p>カスタムの HTML や JavaScript 、その他のコンテンツを、<code class=\"docutils literal notranslate\"><span class=\"pre\">admin/base.html</span></code> を継承するテンプレートの閉じる <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;/body&gt;</span></code> タグの直前に表示させたい場合は、 <code class=\"docutils literal notranslate\"><span class=\"pre\">extrabody</span></code> ブロックを拡張することで実現できます。たとえば、ページ読み込み時にアラートを表示させたい場合、プロジェクトに <code class=\"docutils literal notranslate\"><span class=\"pre\">admin/base.html</span></code> のテンプレートオーバーライドを追加することで対応できます。</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">extends</span> <span class=\"s1\">&#39;admin/base.html&#39;</span> <span class=\"cp\">%}</span>\n\n<span class=\"cp\">{%</span> <span class=\"k\">block</span> <span class=\"nv\">extrabody</span> <span class=\"cp\">%}</span>\n    <span class=\"cp\">{{</span> <span class=\"nb\">block</span><span class=\"nv\">.super</span> <span class=\"cp\">}}</span>\n    <span class=\"p\">&lt;</span><span class=\"nt\">script</span><span class=\"p\">&gt;</span>\n<span class=\"w\">        </span><span class=\"nb\">document</span><span class=\"p\">.</span><span class=\"nx\">addEventListener</span><span class=\"p\">(</span><span class=\"s1\">&#39;DOMContentLoaded&#39;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kd\">function</span><span class=\"p\">()</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"nb\">window</span><span class=\"p\">.</span><span class=\"nx\">alert</span><span class=\"p\">(</span><span class=\"s1\">&#39;Welcome!&#39;</span><span class=\"p\">);</span>\n<span class=\"w\">        </span><span class=\"p\">});</span>\n<span class=\"w\">    </span><span class=\"p\">&lt;/</span><span class=\"nt\">script</span><span class=\"p\">&gt;</span>\n<span class=\"cp\">{%</span> <span class=\"k\">endblock</span> <span class=\"nv\">extrabody</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n<section id=\"adminsite-objects\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code> オブジェクト<a class=\"heading-anchor\" href=\"#adminsite-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">AdminSite</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">name</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'admin'</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Django の admin サイトは <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.admin.sites.AdminSite</span></code> のインスタンスで表現されます。デフォルトでは、このクラスのインスタンスは <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.admin.site</span></code> として作成され、モデルや <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> インスタンスを登録できます。</p>\n<p>デフォルトのadminサイトをカスタマイズしたい場合は、 <a class=\"reference internal\" href=\"#overriding-default-admin-site\"><span class=\"std std-ref\">オーバーライド</span></a> することができます。</p>\n<p>管理サイト <code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code> のインスタンスを作成する際には、コンストラクタの <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> 引数に一意なインスタンス名を指定できます。このインスタンス名はインスタンスを識別するために使用され、特に <a class=\"reference internal\" href=\"#admin-reverse-urls\"><span class=\"std std-ref\">管理用URL</span></a> を逆引きするときに使用されます。インスタンス名を指定しなかった場合、デフォルトのインスタンス名 <code class=\"docutils literal notranslate\"><span class=\"pre\">admin</span></code> が使用されます。 <a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite\" title=\"django.contrib.admin.AdminSite\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code></a> クラスをカスタマイズする例については <a class=\"reference internal\" href=\"#customizing-adminsite\"><span class=\"std std-ref\">AdminSite クラスのカスタマイズ</span></a> を参照してください。</p>\n</dd></dl>\n\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.django.contrib.admin.sites.all_sites\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">django.contrib.admin.sites.</span></span><span class=\"sig-name descname\"><span class=\"pre\">all_sites</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.django.contrib.admin.sites.all_sites\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference external\" href=\"https://docs.python.org/3/library/weakref.html#weakref.WeakSet\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">WeakSet</span></code></a> は全ての管理サイトのインスタンスを含んでいます。</p>\n</dd></dl>\n\n<section id=\"adminsite-attributes\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code> の属性<a class=\"heading-anchor\" href=\"#adminsite-attributes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>テンプレートは <a class=\"reference internal\" href=\"#admin-overriding-templates\"><span class=\"std std-ref\">admin テンプレートをオーバーライドする</span></a> で説明されているように、基本管理テンプレートを上書きしたり拡張したりすることができます。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.site_header\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">site_header</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.site_header\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>各管理ページの上部に表示するテキストを <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;div&gt;</span></code> (文字列) で指定します。デフォルトでは &quot;Django administration&quot; です。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.site_title\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">site_title</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.site_title\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>各管理ページの <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;title&gt;</span></code> の末尾に付けるテキスト (文字列)。デフォルトでは &quot;Django site admin&quot; です。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.site_url\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">site_url</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.site_url\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>各管理ページの上部にある &quot;サイトを見る &quot;リンクのURL。デフォルトでは <code class=\"docutils literal notranslate\"><span class=\"pre\">site_url</span></code> は <code class=\"docutils literal notranslate\"><span class=\"pre\">/</span></code> です。リンクを削除するには <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> を指定してください。</p>\n<p>サブパス上で動作しているサイトでは、 <a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite.each_context\" title=\"django.contrib.admin.AdminSite.each_context\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">each_context()</span></code></a> メソッドは現在のリクエストに <code class=\"docutils literal notranslate\"><span class=\"pre\">request.META['SCRIPT_NAME']</span></code> が設定されているかどうかをチェックし、 <code class=\"docutils literal notranslate\"><span class=\"pre\">site_url</span></code> に <code class=\"docutils literal notranslate\"><span class=\"pre\">/</span></code> 以外の値が設定されていなければ、その値を使用します。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.index_title\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">index_title</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.index_title\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>管理インデックスページのトップに表示するテキスト（文字列）。デフォルトでは &quot;Site administration &quot;です。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.index_template\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">index_template</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.index_template\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin サイトのメインインデックスビューで使用されるカスタムテンプレートへのパス。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.app_index_template\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">app_index_template</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.app_index_template\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin サイトのアプリ インデックスビューで使用されるカスタムテンプレートへのパス。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.empty_value_display\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">empty_value_display</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.empty_value_display\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin サイトのチェンジリストで空の値を表示する際に使用する文字列。デフォルトはダッシュです。この値はフィールドに <code class=\"docutils literal notranslate\"><span class=\"pre\">empty_value_display</span></code> 属性を指定することで、 <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> ごとや <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> 内のカスタムフィールドごとにオーバーライドできます。例については <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.empty_value_display\" title=\"django.contrib.admin.ModelAdmin.empty_value_display\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ModelAdmin.empty_value_display</span></code></a> を参照してください。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.enable_nav_sidebar\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">enable_nav_sidebar</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.enable_nav_sidebar\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>大きな画面でナビゲーションサイドバーを表示するかどうかを決定する真偽値。デフォルトでは <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> に設定されています。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.final_catch_all_view\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">final_catch_all_view</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.final_catch_all_view\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>認証されていないユーザーをログインページにリダイレクトさせる最終キャッチオールビューを管理画面に追加するかどうかを決定する真偽値。デフォルトでは <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> に設定されています。</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">警告</p>\n<p>このビューはモデル列挙のプライバシーに関する潜在的な問題から保護するため、これを <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> に設定することは推奨されません。</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.login_template\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">login_template</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.login_template\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin サイトのログインビューで使用されるカスタムテンプレートへのパス。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.login_form\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">login_form</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.login_form\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin サイトのログインビューで使用される <a class=\"reference internal\" href=\"/ja/6.0/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm\" title=\"django.contrib.auth.forms.AuthenticationForm\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AuthenticationForm</span></code></a> のサブクラス。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.logout_template\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">logout_template</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.logout_template\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin サイトのログアウトビューで使用されるカスタムテンプレートへのパス。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.password_change_form\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">password_change_form</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.password_change_form\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"6.0\">\n<p class=\"version-note-title\">New in Django 6.0</p></aside>\n<p>admin サイトのパスワード変更ビューで使用される <a class=\"reference internal\" href=\"/ja/6.0/topics/auth/default/#django.contrib.auth.forms.PasswordChangeForm\" title=\"django.contrib.auth.forms.PasswordChangeForm\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">PasswordChangeForm</span></code></a> のサブクラス。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.password_change_template\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">password_change_template</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.password_change_template\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin サイトのパスワード変更ビューで使用されるカスタムテンプレートへのパス。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.password_change_done_template\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">password_change_done_template</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.password_change_done_template\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>adminサイトのパスワード変更完了ビューで使用されるカスタムテンプレートへのパス。</p>\n</dd></dl>\n\n</section>\n<section id=\"adminsite-methods\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code> のメソッド<a class=\"heading-anchor\" href=\"#adminsite-methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.each_context\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">each_context</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.each_context\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>admin サイトの各ページのテンプレートコンテキストに置く変数の辞書を返します。</p>\n<p>デフォルトで以下の変数と値が含まれています：</p>\n<ul>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">site_header</span></code>: <a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite.site_header\" title=\"django.contrib.admin.AdminSite.site_header\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">AdminSite.site_header</span></code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">site_title</span></code>: <a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite.site_title\" title=\"django.contrib.admin.AdminSite.site_title\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">AdminSite.site_title</span></code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">site_url</span></code>: <a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite.site_url\" title=\"django.contrib.admin.AdminSite.site_url\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">AdminSite.site_url</span></code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">has_permission</span></code>: <a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite.has_permission\" title=\"django.contrib.admin.AdminSite.has_permission\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">AdminSite.has_permission()</span></code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">available_apps</span></code>: <a class=\"reference internal\" href=\"/ja/6.0/ref/applications/\"><span class=\"doc\">アプリケーションレジストリ</span></a> から現在のユーザーが利用できるアプリケーションのリストです。リストの各エントリは以下のキーを持つアプリケーションを表す dict です:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">app_label</span></code>: アプリケーションのラベル</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">app_url</span></code>: admin のアプリケーションインデックスの URL</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">has_module_perms</span></code>: 現在のユーザーに対して、モジュールのインデックスページの表示とアクセスが許可されているかどうかを示す真偽値。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">models</span></code>: アプリケーションで利用可能なモデルのリスト。</p></li>\n</ul>\n<p>各 model は以下のキーを持つ dict です:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">model</span></code>: モデルクラス</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">object_name</span></code>: モデルのクラス名</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code>: 複数形のモデル名</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">perms</span></code>: <code class=\"docutils literal notranslate\"><span class=\"pre\">add</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">change</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">delete</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">view</span></code> のパーミッションをトラッキングする <code class=\"docutils literal notranslate\"><span class=\"pre\">dict</span></code>。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">admin_url</span></code>: モデルの管理用チェンジリストのURL</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">add_url</span></code>: 新しいモデルインスタンスを追加するための管理用URL</p></li>\n</ul>\n</li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">is_popup</span></code>: 現在のページがポップアップウィンドウで表示されるかどうか</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">is_nav_sidebar_enabled</span></code>: <a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite.enable_nav_sidebar\" title=\"django.contrib.admin.AdminSite.enable_nav_sidebar\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">AdminSite.enable_nav_sidebar</span></code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">log_entries</span></code>: <a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite.get_log_entries\" title=\"django.contrib.admin.AdminSite.get_log_entries\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">AdminSite.get_log_entries()</span></code></a></p></li>\n</ul>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.get_app_list\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_app_list</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">app_label</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.get_app_list\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"/ja/6.0/ref/applications/\"><span class=\"doc\">アプリケーションレジストリ</span></a> から、現在のユーザーが利用できるアプリケーションのリストを返します。オプションで <code class=\"docutils literal notranslate\"><span class=\"pre\">app_label</span></code> 引数を渡すことで、単一のアプリケーションの詳細を取得できます。リストの各エントリは以下のキーを持つアプリケーションを表す辞書です:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">app_label</span></code>: アプリケーションのラベル</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">app_url</span></code>: admin のアプリケーションインデックスの URL</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">has_module_perms</span></code>: 現在のユーザーに対して、モジュールのインデックスページの表示とアクセスが許可されているかどうかを示す真偽値。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">models</span></code>: アプリケーションで利用可能なモデルのリスト。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code>: アプリケーションの名前</p></li>\n</ul>\n<p>各 model は以下のキーを持つ辞書です:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">model</span></code>: モデルクラス</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">object_name</span></code>: モデルのクラス名</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code>: 複数形のモデル名</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">perms</span></code>: <code class=\"docutils literal notranslate\"><span class=\"pre\">add</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">change</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">delete</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">view</span></code> のパーミッションをトラッキングする <code class=\"docutils literal notranslate\"><span class=\"pre\">dict</span></code>。</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">admin_url</span></code>: モデルの管理用チェンジリストのURL</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">add_url</span></code>: 新しいモデルインスタンスを追加するための管理用URL</p></li>\n</ul>\n<p>アプリケーションとモデルのリストはそれらの名前によってアルファベット順にソートされます。このメソッドをオーバーライドして、管理インデックスページのデフォルトの並び順を変更できます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.has_permission\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">has_permission</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.has_permission\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>指定された <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> のユーザが admin サイトの少なくとも1つのページを閲覧する権限を持っている場合に <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> を返します。デフォルトは <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/auth/#django.contrib.auth.models.User.is_active\" title=\"django.contrib.auth.models.User.is_active\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">User.is_active</span></code></a> と <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/auth/#django.contrib.auth.models.User.is_staff\" title=\"django.contrib.auth.models.User.is_staff\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">User.is_staff</span></code></a> の両方が <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> である必要があります。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.register\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">register</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model_or_iterable</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">admin_class</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">options</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.register\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>指定された model クラス (またはクラスのイテラブル) を指定された <code class=\"docutils literal notranslate\"><span class=\"pre\">admin_class</span></code> とともに登録します。<code class=\"docutils literal notranslate\"><span class=\"pre\">admin_class</span></code> はデフォルトで <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code></a> (デフォルトの管理オプション) になります。キーワード引数 (たとえば <code class=\"docutils literal notranslate\"><span class=\"pre\">list_display</span></code>) が与えられた場合、それらは admin クラスのオプションとして適用されます。</p>\n<p>モデルが抽象クラスの場合は <a class=\"reference internal\" href=\"/ja/6.0/ref/exceptions/#django.core.exceptions.ImproperlyConfigured\" title=\"django.core.exceptions.ImproperlyConfigured\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ImproperlyConfigured</span></code></a> を、モデルが既に登録されている場合は <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.admin.exceptions.AlreadyRegistered</span></code> を発生させます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.unregister\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">unregister</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model_or_iterable</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.unregister\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>指定されたモデルクラス（またはクラスのイテラブル）の登録を解除します。</p>\n<p>モデルが登録されていない場合、 <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.admin.exceptions.NotRegistered</span></code> を発生させます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.get_model_admin\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_model_admin</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.get_model_admin\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>与えられた model クラスの admin クラスを返します。モデルが登録されていない場合は <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.admin.exceptions.NotRegistered</span></code> を発生させます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.AdminSite.get_log_entries\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">AdminSite.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_log_entries</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">request</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.AdminSite.get_log_entries\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>サイトインデックスページに表示される、関連する <a class=\"reference internal\" href=\"#django.contrib.admin.models.LogEntry\" title=\"django.contrib.admin.models.LogEntry\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">LogEntry</span></code></a> インスタンスのクエリセットを返します。このメソッドは、他の条件でログエントリをフィルタするためにオーバーライドできます。</p>\n</dd></dl>\n\n</section>\n<section id=\"hooking-adminsite-instances-into-your-urlconf\">\n<span id=\"hooking-adminsite-to-urlconf\"></span><h3>URLconf に <code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code> インスタンスをフックします。<a class=\"heading-anchor\" href=\"#hooking-adminsite-instances-into-your-urlconf\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Django admin のセットアップの最後のステップは、 <code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code> インスタンスを URLconf にフックすることです。指定した URL を <code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite.urls</span></code> メソッドで指定します。 <a class=\"reference internal\" href=\"/ja/6.0/ref/urls/#django.urls.include\" title=\"django.urls.include\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">include()</span></code></a> を使う必要はありません。</p>\n<p>このインスタンスでは、デフォルトの <code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code> インスタンス <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.admin.site</span></code> を URL <code class=\"docutils literal notranslate\"><span class=\"pre\">/admin/</span></code> に登録します:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># urls.py</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;admin/&quot;</span><span class=\"p\">,</span> <span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">urls</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n</section>\n<section id=\"customizing-the-adminsite-class\">\n<span id=\"customizing-adminsite\"></span><h3><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code> クラスのカスタマイズ<a class=\"heading-anchor\" href=\"#customizing-the-adminsite-class\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>カスタムの動作で独自の admin サイトを設定したい場合は、自由に <code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code> をサブクラス化し、好きなものをオーバーライドしたり追加したりすることができます。そして、 <code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code> サブクラスのインスタンスを作成し (他の Python クラスと同じようにインスタンスを作成します)、モデルや <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> サブクラスをデフォルトのサイトではなく、サブクラスに登録します。最後に、 <code class=\"file docutils literal notranslate\"><span class=\"pre\">myproject/urls.py</span></code> を更新して、 <a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite\" title=\"django.contrib.admin.AdminSite\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code></a> サブクラスを参照するようにします。</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">myapp/admin.py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">MyModel</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyAdminSite</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">AdminSite</span><span class=\"p\">):</span>\n    <span class=\"n\">site_header</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;Monty Python administration&quot;</span>\n\n\n<span class=\"n\">admin_site</span> <span class=\"o\">=</span> <span class=\"n\">MyAdminSite</span><span class=\"p\">(</span><span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;myadmin&quot;</span><span class=\"p\">)</span>\n<span class=\"n\">admin_site</span><span class=\"o\">.</span><span class=\"n\">register</span><span class=\"p\">(</span><span class=\"n\">MyModel</span><span class=\"p\">)</span>\n</code></pre></figure>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">myproject/urls.py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span>\n\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">myapp.admin</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin_site</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;myadmin/&quot;</span><span class=\"p\">,</span> <span class=\"n\">admin_site</span><span class=\"o\">.</span><span class=\"n\">urls</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></figure>\n<p>自分の <code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code> インスタンスを使う場合、アプリごとの <code class=\"docutils literal notranslate\"><span class=\"pre\">admin</span></code> モジュールを全て <code class=\"docutils literal notranslate\"><span class=\"pre\">myproject.admin</span></code> モジュールにインポートする可能性が高いので、 <code class=\"docutils literal notranslate\"><span class=\"pre\">admin</span></code> モジュールを自動検出させたくないかも知れないことに注意してください。つまり、 <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a> 設定に <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.admin'</span></code> の代わりに <code class=\"docutils literal notranslate\"><span class=\"pre\">'django.contrib.admin.apps.SimpleAdminConfig'</span></code> を記述する必要があります。</p>\n</section>\n<section id=\"overriding-the-default-admin-site\">\n<span id=\"overriding-default-admin-site\"></span><h3>デフォルトの admin サイトをオーバーライドする<a class=\"heading-anchor\" href=\"#overriding-the-default-admin-site\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>デフォルトの <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.admin.site</span></code> をオーバーライドするには、カスタム <code class=\"docutils literal notranslate\"><span class=\"pre\">AppConfig</span></code> の <a class=\"reference internal\" href=\"#django.contrib.admin.apps.SimpleAdminConfig.default_site\" title=\"django.contrib.admin.apps.SimpleAdminConfig.default_site\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">default_site</span></code></a> 属性に <code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code> サブクラスまたはサイトのインスタンスを返す呼び出し可能オブジェクトのドット区切りインポートパスを指定します。</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">myproject/admin.py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyAdminSite</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">AdminSite</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></figure>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">myproject/apps.py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.admin.apps</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">AdminConfig</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyAdminConfig</span><span class=\"p\">(</span><span class=\"n\">AdminConfig</span><span class=\"p\">):</span>\n    <span class=\"n\">default_site</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;myproject.admin.MyAdminSite&quot;</span>\n</code></pre></figure>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">myproject/settings.py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"n\">INSTALLED_APPS</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"c1\"># ...</span>\n    <span class=\"s2\">&quot;myproject.apps.MyAdminConfig&quot;</span><span class=\"p\">,</span>  <span class=\"c1\"># replaces &#39;django.contrib.admin&#39;</span>\n    <span class=\"c1\"># ...</span>\n<span class=\"p\">]</span>\n</code></pre></figure>\n</section>\n<section id=\"multiple-admin-sites-in-the-same-urlconf\">\n<span id=\"multiple-admin-sites\"></span><h3>同じ URLconf に複数の admin サイトを置く<a class=\"heading-anchor\" href=\"#multiple-admin-sites-in-the-same-urlconf\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>同じ Django を使った Web サイトに、複数の admin サイトのインスタンスを作成できます。 <code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code> のインスタンスを複数作成し、それぞれを異なる URL に配置します。</p>\n<p>このインスタンスでは、 <code class=\"docutils literal notranslate\"><span class=\"pre\">/basic-admin/</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">/advanced-admin/</span></code> はそれぞれ <code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code> インスタンス <code class=\"docutils literal notranslate\"><span class=\"pre\">myproject.admin.basic_site</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">myproject.admin.advanced_site</span></code> を使用した別々のバージョンの admin サイトです:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># urls.py</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">path</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">myproject.admin</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">advanced_site</span><span class=\"p\">,</span> <span class=\"n\">basic_site</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;basic-admin/&quot;</span><span class=\"p\">,</span> <span class=\"n\">basic_site</span><span class=\"o\">.</span><span class=\"n\">urls</span><span class=\"p\">),</span>\n    <span class=\"n\">path</span><span class=\"p\">(</span><span class=\"s2\">&quot;advanced-admin/&quot;</span><span class=\"p\">,</span> <span class=\"n\">advanced_site</span><span class=\"o\">.</span><span class=\"n\">urls</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code> インスタンスはコンストラクタに一つの引数、名前を渡します。この引数は <a class=\"reference internal\" href=\"#admin-reverse-urls\"><span class=\"std std-ref\">逆引き</span></a> のためにURL名のプレフィックスとなります。これは複数の <code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code> を使用する場合にのみ必要です。</p>\n</section>\n<section id=\"adding-views-to-admin-sites\">\n<h3>admin サイトにビューを追加する<a class=\"heading-anchor\" href=\"#adding-views-to-admin-sites\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code></a> と同様に、 <a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite\" title=\"django.contrib.admin.AdminSite\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code></a> は <code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_urls()</span></code> メソッドを拡張して、新しいビューのパターンを追加します。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p>admin テンプレートを使用する、またはベースとなる admin テンプレートを拡張するビューは、テンプレートをレンダリングする前に <code class=\"docutils literal notranslate\"><span class=\"pre\">request.current_app</span></code> を設定する必要があります。ビューが <code class=\"docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code> にある場合は <code class=\"docutils literal notranslate\"><span class=\"pre\">self.name</span></code> を、ビューが <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> にある場合は <code class=\"docutils literal notranslate\"><span class=\"pre\">self.admin_site.name</span></code> を設定します。</p>\n</aside>\n</section>\n<section id=\"adding-a-password-reset-feature\">\n<span id=\"auth-password-reset\"></span><h3>パスワードリセット機能を追加する<a class=\"heading-anchor\" href=\"#adding-a-password-reset-feature\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>URLconfに数行を追加することで、admin サイトにパスワードリセット機能を追加できます。具体的には、以下の4つのパターンを追加します:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.auth</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">views</span> <span class=\"k\">as</span> <span class=\"n\">auth_views</span>\n\n<span class=\"n\">path</span><span class=\"p\">(</span>\n    <span class=\"s2\">&quot;admin/password_reset/&quot;</span><span class=\"p\">,</span>\n    <span class=\"n\">auth_views</span><span class=\"o\">.</span><span class=\"n\">PasswordResetView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">(</span>\n        <span class=\"n\">extra_context</span><span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;site_header&quot;</span><span class=\"p\">:</span> <span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">site_header</span><span class=\"p\">}</span>\n    <span class=\"p\">),</span>\n    <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;admin_password_reset&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">),</span>\n<span class=\"n\">path</span><span class=\"p\">(</span>\n    <span class=\"s2\">&quot;admin/password_reset/done/&quot;</span><span class=\"p\">,</span>\n    <span class=\"n\">auth_views</span><span class=\"o\">.</span><span class=\"n\">PasswordResetDoneView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">(</span>\n        <span class=\"n\">extra_context</span><span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;site_header&quot;</span><span class=\"p\">:</span> <span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">site_header</span><span class=\"p\">}</span>\n    <span class=\"p\">),</span>\n    <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;password_reset_done&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">),</span>\n<span class=\"n\">path</span><span class=\"p\">(</span>\n    <span class=\"s2\">&quot;reset/&lt;uidb64&gt;/&lt;token&gt;/&quot;</span><span class=\"p\">,</span>\n    <span class=\"n\">auth_views</span><span class=\"o\">.</span><span class=\"n\">PasswordResetConfirmView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">(</span>\n        <span class=\"n\">extra_context</span><span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;site_header&quot;</span><span class=\"p\">:</span> <span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">site_header</span><span class=\"p\">}</span>\n    <span class=\"p\">),</span>\n    <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;password_reset_confirm&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">),</span>\n<span class=\"n\">path</span><span class=\"p\">(</span>\n    <span class=\"s2\">&quot;reset/done/&quot;</span><span class=\"p\">,</span>\n    <span class=\"n\">auth_views</span><span class=\"o\">.</span><span class=\"n\">PasswordResetCompleteView</span><span class=\"o\">.</span><span class=\"n\">as_view</span><span class=\"p\">(</span>\n        <span class=\"n\">extra_context</span><span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;site_header&quot;</span><span class=\"p\">:</span> <span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">site_header</span><span class=\"p\">}</span>\n    <span class=\"p\">),</span>\n    <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;password_reset_complete&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">),</span>\n</code></pre></div>\n<p>（上記は <code class=\"docutils literal notranslate\"><span class=\"pre\">admin/</span></code> に admin を追加していることを前提としており、admin アプリ自体を含む行の前に <code class=\"docutils literal notranslate\"><span class=\"pre\">^admin/</span></code> で始まるURLを配置することが必要です）</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">admin_password_reset</span></code> という名前のURLがあると、デフォルトの admin ログインページのパスワードボックスの下に &quot;forgot your password? &quot;というリンクが表示されます。</p>\n</section>\n</section>\n<section id=\"logentry-objects\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">LogEntry</span></code> オブジェクト<a class=\"heading-anchor\" href=\"#logentry-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.models.LogEntry\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-prename descclassname\"><span class=\"pre\">models.</span></span><span class=\"sig-name descname\"><span class=\"pre\">LogEntry</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.models.LogEntry\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">LogEntry</span></code> クラスは管理画面を通して行われたオブジェクトの追加、変更、削除を記録します。</p>\n</dd></dl>\n\n<section id=\"logentry-attributes\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">LogEntry</span></code> の属性<a class=\"heading-anchor\" href=\"#logentry-attributes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.models.LogEntry.action_time\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">LogEntry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">action_time</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.models.LogEntry.action_time\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>アクションの日時。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.models.LogEntry.user\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">LogEntry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">user</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.models.LogEntry.user\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>アクションを実行したユーザー（ <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-AUTH_USER_MODEL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">AUTH_USER_MODEL</span></code></a> インスタンス）。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.models.LogEntry.content_type\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">LogEntry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">content_type</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.models.LogEntry.content_type\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>変更されたオブジェクトの <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/contenttypes/#django.contrib.contenttypes.models.ContentType\" title=\"django.contrib.contenttypes.models.ContentType\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ContentType</span></code></a> 。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.models.LogEntry.object_id\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">LogEntry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">object_id</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.models.LogEntry.object_id\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>変更されたオブジェクトの主キーのテキスト表現。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.models.LogEntry.object_repr\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">LogEntry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">object_repr</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.models.LogEntry.object_repr\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>変更後のオブジェクトの <code class=\"docutils literal notranslate\"><span class=\"pre\">repr()</span></code> 。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.models.LogEntry.action_flag\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">LogEntry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">action_flag</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.models.LogEntry.action_flag\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>ログに記録されたアクションの種類: <code class=\"docutils literal notranslate\"><span class=\"pre\">ADDITION</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">CHANGE</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">DELETION</span></code> 。</p>\n<p>たとえば、admin を通して行われたすべての追加操作のリストを取得する場合:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.admin.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">ADDITION</span><span class=\"p\">,</span> <span class=\"n\">LogEntry</span>\n\n<span class=\"n\">LogEntry</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">action_flag</span><span class=\"o\">=</span><span class=\"n\">ADDITION</span><span class=\"p\">)</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.models.LogEntry.change_message\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">LogEntry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">change_message</span></span><a class=\"heading-anchor\" href=\"#django.contrib.admin.models.LogEntry.change_message\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>変更の詳細。たとえば編集の場合、メッセージには編集されたフィールドのリストが含まれます。Django の admin サイトでは、この内容を JSON 構造として整形し、<a class=\"reference internal\" href=\"#django.contrib.admin.models.LogEntry.get_change_message\" title=\"django.contrib.admin.models.LogEntry.get_change_message\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_change_message()</span></code></a> が現在のユーザ言語で翻訳されたメッセージを再構成できるようにしています。カスタムコードではこれをプレーンな文字列として設定するかもしれません。この値を取得するには、直接アクセスするのではなく <a class=\"reference internal\" href=\"#django.contrib.admin.models.LogEntry.get_change_message\" title=\"django.contrib.admin.models.LogEntry.get_change_message\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">get_change_message()</span></code></a> メソッドを使用することをお勧めします。</p>\n</dd></dl>\n\n</section>\n<section id=\"logentry-methods\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">LogEntry</span></code> メソッド<a class=\"heading-anchor\" href=\"#logentry-methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.models.LogEntry.get_edited_object\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">LogEntry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_edited_object</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.models.LogEntry.get_edited_object\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>参照されているオブジェクトを返すショートカット。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.models.LogEntry.get_change_message\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">LogEntry.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_change_message</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.models.LogEntry.get_change_message\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.contrib.admin.models.LogEntry.change_message\" title=\"django.contrib.admin.models.LogEntry.change_message\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">change_message</span></code></a> を現在のユーザ言語に変換します。Django 1.10 より前に作成されたメッセージは、常にログに記録された言語で表示されます。</p>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"reversing-admin-urls\">\n<span id=\"admin-reverse-urls\"></span><h2>admin の URL を逆引きする<a class=\"heading-anchor\" href=\"#reversing-admin-urls\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite\" title=\"django.contrib.admin.AdminSite\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code></a> がデプロイされると、そのサイトが提供するビューは Django の <a class=\"reference internal\" href=\"/ja/6.0/topics/http/urls/#naming-url-patterns\"><span class=\"std std-ref\">URL 逆引きシステム</span></a> を使ってアクセスできるようになります。</p>\n<p><a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite\" title=\"django.contrib.admin.AdminSite\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">AdminSite</span></code></a> は以下のURLパターンを提供します:</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p>ページ</p></th>\n<th class=\"head\"><p>URL 名</p></th>\n<th class=\"head\"><p>パラメータ</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p>インデックス</p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">index</span></code></p></td>\n<td></td>\n</tr>\n<tr class=\"row-odd\"><td><p>ログイン</p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">login</span></code></p></td>\n<td></td>\n</tr>\n<tr class=\"row-even\"><td><p>ログアウト</p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">logout</span></code></p></td>\n<td></td>\n</tr>\n<tr class=\"row-odd\"><td><p>パスワードの変更</p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">password_change</span></code></p></td>\n<td></td>\n</tr>\n<tr class=\"row-even\"><td><p>パスワード変更完了</p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">password_change_done</span></code></p></td>\n<td></td>\n</tr>\n<tr class=\"row-odd\"><td><p>国際化 JavaScript</p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">jsi18n</span></code></p></td>\n<td></td>\n</tr>\n<tr class=\"row-even\"><td><p>アプリケーションのインデックスページ</p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">app_list</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">app_label</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p>オブジェクトのページへのリダイレクト</p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">view_on_site</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">content_type_id</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">object_id</span></code></p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>それぞれの <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code></a> インスタンスは追加の名前付き URL のセットを提供します:</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p>ページ</p></th>\n<th class=\"head\"><p>URL 名</p></th>\n<th class=\"head\"><p>パラメータ</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p>チェンジリスト</p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">{{</span> <span class=\"pre\">app_label</span> <span class=\"pre\">}}_{{</span> <span class=\"pre\">model_name</span> <span class=\"pre\">}}_changelist</span></code></p></td>\n<td></td>\n</tr>\n<tr class=\"row-odd\"><td><p>追加</p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">{{</span> <span class=\"pre\">app_label</span> <span class=\"pre\">}}_{{</span> <span class=\"pre\">model_name</span> <span class=\"pre\">}}_add</span></code></p></td>\n<td></td>\n</tr>\n<tr class=\"row-even\"><td><p>履歴</p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">{{</span> <span class=\"pre\">app_label</span> <span class=\"pre\">}}_{{</span> <span class=\"pre\">model_name</span> <span class=\"pre\">}}_history</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">object_id</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p>削除</p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">{{</span> <span class=\"pre\">app_label</span> <span class=\"pre\">}}_{{</span> <span class=\"pre\">model_name</span> <span class=\"pre\">}}_delete</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">object_id</span></code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p>変更</p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">{{</span> <span class=\"pre\">app_label</span> <span class=\"pre\">}}_{{</span> <span class=\"pre\">model_name</span> <span class=\"pre\">}}_change</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">object_id</span></code></p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">UserAdmin</span></code> は以下の名前付きURLを提供します:</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p>ページ</p></th>\n<th class=\"head\"><p>URL 名</p></th>\n<th class=\"head\"><p>パラメータ</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p>パスワードの変更</p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">auth_user_password_change</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">user_id</span></code></p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>これらの名前付きURLはアプリケーション名前空間 <code class=\"docutils literal notranslate\"><span class=\"pre\">admin</span></code> とサイトインスタンス名に対応するインスタンス名前空間に登録されます。</p>\n<p>つまり、デフォルトの admin 画面で特定の <code class=\"docutils literal notranslate\"><span class=\"pre\">Choice</span></code> オブジェクト(投票アプリケーションから)の変更ビューへの参照を取得したい場合、次のように呼び出します:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.urls</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">reverse</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">c</span> <span class=\"o\">=</span> <span class=\"n\">Choice</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"o\">...</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">change_url</span> <span class=\"o\">=</span> <span class=\"n\">reverse</span><span class=\"p\">(</span><span class=\"s2\">&quot;admin:polls_choice_change&quot;</span><span class=\"p\">,</span> <span class=\"n\">args</span><span class=\"o\">=</span><span class=\"p\">(</span><span class=\"n\">c</span><span class=\"o\">.</span><span class=\"n\">id</span><span class=\"p\">,))</span>\n</code></pre></div>\n<p>これは、最初に登録された管理アプリケーションのインスタンスを（インスタンス名が何であっても）見つけ、そのインスタンスで <code class=\"docutils literal notranslate\"><span class=\"pre\">poll.Choice</span></code> インスタンスを変更するためのビューを解決します。</p>\n<p>特定の管理インスタンスのURLを見つけたい場合は、そのインスタンス名を <code class=\"docutils literal notranslate\"><span class=\"pre\">current_app</span></code> ヒントとして逆引きのコールに与えます。たとえば、特に <code class=\"docutils literal notranslate\"><span class=\"pre\">custom</span></code> という名前の管理インスタンスから管理ビューを取得したい場合は、以下のように呼び出す必要があります。</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">change_url</span> <span class=\"o\">=</span> <span class=\"n\">reverse</span><span class=\"p\">(</span><span class=\"s2\">&quot;admin:polls_choice_change&quot;</span><span class=\"p\">,</span> <span class=\"n\">args</span><span class=\"o\">=</span><span class=\"p\">(</span><span class=\"n\">c</span><span class=\"o\">.</span><span class=\"n\">id</span><span class=\"p\">,),</span> <span class=\"n\">current_app</span><span class=\"o\">=</span><span class=\"s2\">&quot;custom&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>詳細は <a class=\"reference internal\" href=\"/ja/6.0/topics/http/urls/#topics-http-reversing-url-namespaces\"><span class=\"std std-ref\">名前空間のURLの逆引き</span></a> のドキュメントを参照してください。</p>\n<p>Django は、テンプレート内で admin の URL を簡単に逆引きできるように、アクション を引数に取る <code class=\"docutils literal notranslate\"><span class=\"pre\">admin_urlname</span></code> フィルタを提供しています:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">admin_urls</span> <span class=\"cp\">%}</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">a</span> <span class=\"na\">href</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">url</span> <span class=\"nv\">opts</span><span class=\"o\">|</span><span class=\"nf\">admin_urlname</span><span class=\"s1\">:&#39;add&#39;</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span>Add user<span class=\"p\">&lt;/</span><span class=\"nt\">a</span><span class=\"p\">&gt;</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">a</span> <span class=\"na\">href</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">url</span> <span class=\"nv\">opts</span><span class=\"o\">|</span><span class=\"nf\">admin_urlname</span><span class=\"s1\">:&#39;delete&#39;</span> <span class=\"nv\">user.pk</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span><span class=\"p\">&gt;</span>Delete this user<span class=\"p\">&lt;/</span><span class=\"nt\">a</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n<p>上記の例のアクションは上記の <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code></a> インスタンスの URL 名の最後の部分と一致します。変数 <code class=\"docutils literal notranslate\"><span class=\"pre\">opts</span></code> には <code class=\"docutils literal notranslate\"><span class=\"pre\">app_label</span></code> と <code class=\"docutils literal notranslate\"><span class=\"pre\">model_name</span></code> 属性を持つ任意のオブジェクトを指定することができ、通常は現在のモデルの管理ビューから提供されます。</p>\n</section>\n<section id=\"the-display-decorator\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">display</span></code> デコレータ<a class=\"heading-anchor\" href=\"#the-display-decorator\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.display\">\n<span class=\"sig-name descname\"><span class=\"pre\">display</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"keyword-only-separator o\"><abbr title=\"Keyword-only parameters separator (PEP 3102)\"><span class=\"pre\">*</span></abbr></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">boolean</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">ordering</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">description</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">empty_value</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.display\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>このデコレータは <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.list_display\" title=\"django.contrib.admin.ModelAdmin.list_display\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">list_display</span></code></a> や <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.readonly_fields\" title=\"django.contrib.admin.ModelAdmin.readonly_fields\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">readonly_fields</span></code></a> で使用できるカスタム表示関数に特定の属性を指定するために使用できます:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">display</span><span class=\"p\">(</span>\n    <span class=\"n\">boolean</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span>\n    <span class=\"n\">ordering</span><span class=\"o\">=</span><span class=\"s2\">&quot;-publish_date&quot;</span><span class=\"p\">,</span>\n    <span class=\"n\">description</span><span class=\"o\">=</span><span class=\"s2\">&quot;Is Published?&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">is_published</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"p\">):</span>\n    <span class=\"k\">return</span> <span class=\"n\">obj</span><span class=\"o\">.</span><span class=\"n\">publish_date</span> <span class=\"ow\">is</span> <span class=\"ow\">not</span> <span class=\"kc\">None</span>\n</code></pre></div>\n<p>これは、いくつかの属性を（元の長い名前で）関数に直接設定することと等価です。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">is_published</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"p\">):</span>\n    <span class=\"k\">return</span> <span class=\"n\">obj</span><span class=\"o\">.</span><span class=\"n\">publish_date</span> <span class=\"ow\">is</span> <span class=\"ow\">not</span> <span class=\"kc\">None</span>\n\n\n<span class=\"n\">is_published</span><span class=\"o\">.</span><span class=\"n\">boolean</span> <span class=\"o\">=</span> <span class=\"kc\">True</span>\n<span class=\"n\">is_published</span><span class=\"o\">.</span><span class=\"n\">admin_order_field</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;-publish_date&quot;</span>\n<span class=\"n\">is_published</span><span class=\"o\">.</span><span class=\"n\">short_description</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;Is Published?&quot;</span>\n</code></pre></div>\n<p>また、<code class=\"docutils literal notranslate\"><span class=\"pre\">empty_value</span></code> デコレータパラメータは、関数に直接割り当てられた <code class=\"docutils literal notranslate\"><span class=\"pre\">empty_value_display</span></code> 属性にマッピングされることに注意してください。真偽値 <code class=\"docutils literal notranslate\"><span class=\"pre\">boolean</span></code> と併用することはできません。</p>\n<p>このデコレータの使用は、表示関数を作成する上で必須ではありませんが、 関数の目的を特定するための目印として、引数なしで使用すると便利です:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"nd\">@admin</span><span class=\"o\">.</span><span class=\"n\">display</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">published_year</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">obj</span><span class=\"p\">):</span>\n    <span class=\"k\">return</span> <span class=\"n\">obj</span><span class=\"o\">.</span><span class=\"n\">publish_date</span><span class=\"o\">.</span><span class=\"n\">year</span>\n</code></pre></div>\n<p>この場合、関数に属性は追加されません。</p>\n</dd></dl>\n\n</section>\n<section id=\"the-staff-member-required-decorator\">\n<h2><code class=\"docutils literal notranslate\"><span class=\"pre\">staff_member_required</span></code> デコレータ<a class=\"heading-anchor\" href=\"#the-staff-member-required-decorator\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.admin.views.decorators.staff_member_required\">\n<span class=\"sig-name descname\"><span class=\"pre\">staff_member_required</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">redirect_field_name</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'next'</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">login_url</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">'admin:login'</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.views.decorators.staff_member_required\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>このデコレータは、認可が必要な admin ビューで使用されます。この関数でデコレーションされたビューは、以下の動作をするようになります。</p>\n<ul class=\"simple\">\n<li><p>ユーザーがログインしており、スタッフであり(<code class=\"docutils literal notranslate\"><span class=\"pre\">User.is_staff=True</span></code>)、アクティブであれば(<code class=\"docutils literal notranslate\"><span class=\"pre\">User.is_active=True</span></code>)、ビューを正常に実行します。</p></li>\n<li><p>そうでない場合、リクエストは <code class=\"docutils literal notranslate\"><span class=\"pre\">login_url</span></code> パラメータで指定された URL にリダイレクトされ、 <code class=\"docutils literal notranslate\"><span class=\"pre\">redirect_field_name</span></code> で指定されたクエリ文字列変数に元々リクエストされていたパスが格納されます。例: <code class=\"docutils literal notranslate\"><span class=\"pre\">/admin/login/?next=/admin/polls/question/3/</span></code> 。</p></li>\n</ul>\n<p>使用例:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib.admin.views.decorators</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">staff_member_required</span>\n\n\n<span class=\"nd\">@staff_member_required</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n</dd></dl>\n\n</section>","rootId":"module-django.contrib.admin","toc":[{"title":"概要","anchor":"overview","children":[{"title":"他のトピック","anchor":"other-topics","children":[]}]},{"title":"ModelAdmin のオブジェクト","anchor":"modeladmin-objects","children":[{"title":"register デコレータ","anchor":"the-register-decorator","children":[]},{"title":"admin ファイルを見つける","anchor":"discovery-of-admin-files","children":[]},{"title":"ModelAdmin のオプション","anchor":"modeladmin-options","children":[{"title":"カスタムテンプレートのオプション","anchor":"custom-template-options","children":[]}]},{"title":"ModelAdmin のメソッド","anchor":"modeladmin-methods","children":[{"title":"その他のメソッド","anchor":"other-methods","children":[]}]},{"title":"ModelAdmin アセットの定義","anchor":"modeladmin-asset-definitions","children":[{"title":"jQuery","anchor":"jquery","children":[]}]}]},{"title":"InlineModelAdmin オブジェクト","anchor":"inlinemodeladmin-objects","children":[{"title":"InlineModelAdmin のオプション","anchor":"inlinemodeladmin-options","children":[]},{"title":"同じ親モデルへの複数の外部キーを持つモデルを扱う","anchor":"working-with-a-model-with-two-or-more-foreign-keys-to-the-same-parent-model","children":[]},{"title":"多対多のモデルを扱う","anchor":"working-with-many-to-many-models","children":[]},{"title":"多対多の中間モデルとともに使う","anchor":"working-with-many-to-many-intermediary-models","children":[]},{"title":"ジェネリックリレーションをインラインとして使う","anchor":"using-generic-relations-as-an-inline","children":[]}]},{"title":"カスタムのバリデーションを admin に追加する","anchor":"adding-custom-validation-to-the-admin","children":[]},{"title":"admin テンプレートをオーバーライドする","anchor":"overriding-admin-templates","children":[{"title":"Set up your project's admin template directories","anchor":"set-up-your-project-s-admin-template-directories","children":[]},{"title":"admin テンプレートをオーバーライドするか、それとも置き換えるか","anchor":"overriding-vs-replacing-an-admin-template","children":[]},{"title":"アプリやモデルごとにオーバーライド可能なテンプレート","anchor":"templates-which-may-be-overridden-per-app-or-model","children":[]},{"title":"ルートテンプレートとログインテンプレート","anchor":"root-and-login-templates","children":[]}]},{"title":"テーマのサポート","anchor":"theming-support","children":[]},{"title":"extrabody ブロック","anchor":"extrabody-block","children":[]},{"title":"AdminSite オブジェクト","anchor":"adminsite-objects","children":[{"title":"AdminSite の属性","anchor":"adminsite-attributes","children":[]},{"title":"AdminSite のメソッド","anchor":"adminsite-methods","children":[]},{"title":"URLconf に AdminSite インスタンスをフックします。","anchor":"hooking-adminsite-instances-into-your-urlconf","children":[]},{"title":"AdminSite クラスのカスタマイズ","anchor":"customizing-the-adminsite-class","children":[]},{"title":"デフォルトの admin サイトをオーバーライドする","anchor":"overriding-the-default-admin-site","children":[]},{"title":"同じ URLconf に複数の admin サイトを置く","anchor":"multiple-admin-sites-in-the-same-urlconf","children":[]},{"title":"admin サイトにビューを追加する","anchor":"adding-views-to-admin-sites","children":[]},{"title":"パスワードリセット機能を追加する","anchor":"adding-a-password-reset-feature","children":[]}]},{"title":"LogEntry オブジェクト","anchor":"logentry-objects","children":[{"title":"LogEntry の属性","anchor":"logentry-attributes","children":[]},{"title":"LogEntry メソッド","anchor":"logentry-methods","children":[]}]},{"title":"admin の URL を逆引きする","anchor":"reversing-admin-urls","children":[]},{"title":"display デコレータ","anchor":"the-display-decorator","children":[]},{"title":"staff_member_required デコレータ","anchor":"the-staff-member-required-decorator","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"API リファレンス","url":"/ja/6.0/ref/"},{"docname":"ref/contrib/index","title":"contrib パッケージ","url":"/ja/6.0/ref/contrib/"}],"prev":{"docname":"ref/contrib/index","title":"contrib パッケージ","url":"/ja/6.0/ref/contrib/"},"next":{"docname":"ref/contrib/admin/actions","title":"管理アクション","url":"/ja/6.0/ref/contrib/admin/actions/"},"formats":{"html":"/ja/6.0/ref/contrib/admin/","markdown":"/ja/6.0/ref/contrib/admin.md","json":"/ja/6.0/ref/contrib/admin.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/ref/contrib/admin/index.txt","official":"https://docs.djangoproject.com/ja/6.0/ref/contrib/admin/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}