{"title":"Django-administratörens webbplats","version":"6.1","locale":"sv","docname":"ref/contrib/admin/index","url":"/sv/6.1/ref/contrib/admin/","canonical":"https://djangodocs.dev/sv/6.1/ref/contrib/admin/","summary":"En av de mest kraftfulla delarna av Django är det automatiska administratörsgränssnittet.","html":"<span id=\"the-django-admin-site\"></span><h1>Django-administratörens webbplats<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>En av de mest kraftfulla delarna av Django är det automatiska administratörsgränssnittet. Det läser metadata från dina modeller för att tillhandahålla ett snabbt, modellcentrerat gränssnitt där betrodda användare kan hantera innehåll på din webbplats. Administratörens rekommenderade användning är begränsad till en organisations interna hanteringsverktyg. Det är inte avsett för att bygga hela frontend runt.</p>\n<p>Administratören har många hooks för anpassning, men akta dig för att försöka använda dessa hooks exklusivt. Om du behöver tillhandahålla ett mer processcentrerat gränssnitt som abstraherar bort implementeringsdetaljerna för databastabeller och fält, är det förmodligen dags att skriva dina egna vyer.</p>\n<p>I det här dokumentet beskriver vi hur du aktiverar, använder och anpassar Djangos administratörsgränssnitt.</p>\n<section id=\"overview\">\n<h2>Översikt<a class=\"heading-anchor\" href=\"#overview\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Administratören är aktiverad i den standardprojektmall som används av <a class=\"reference internal\" href=\"/sv/6.1/ref/django-admin/#django-admin-startproject\"><code class=\"xref std std-djadmin docutils literal notranslate\">startproject</code></a>.</p>\n<p>Om du inte använder standardprojektmallen följer här kraven:</p>\n<ol class=\"arabic simple\">\n<li><p>Lägg till <code class=\"docutils literal notranslate\">'django.contrib.admin'</code> och dess beroenden - <a class=\"reference internal\" href=\"/sv/6.1/topics/auth/#module-django.contrib.auth\" title=\"django.contrib.auth: Django's authentication framework.\"><code class=\"xref py py-mod docutils literal notranslate\">django.contrib.auth</code></a>, <a class=\"reference internal\" href=\"/sv/6.1/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\">django.contrib.contenttypes</code></a>, <a class=\"reference internal\" href=\"/sv/6.1/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\">django.contrib.messages</code></a>, och <a class=\"reference internal\" href=\"/sv/6.1/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\">django.contrib.sessions</code></a> - till din <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a> inställning.</p></li>\n<li><p>Konfigurera en <a class=\"reference internal\" href=\"/sv/6.1/topics/templates/#django.template.backends.django.DjangoTemplates\" title=\"django.template.backends.django.DjangoTemplates\"><code class=\"xref py py-class docutils literal notranslate\">DjangoTemplates</code></a>-backend i din <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\">TEMPLATES</code></a>-inställning med <code class=\"docutils literal notranslate\">django.template.context_processors.request</code>, <code class=\"docutils literal notranslate\">django.contrib.auth.context_processors.auth</code> och <code class=\"docutils literal notranslate\">django.contrib.messages.context_processors.messages</code> i alternativet <code class=\"docutils literal notranslate\">'context_processors'</code> i <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-TEMPLATES-OPTIONS\"><code class=\"xref std std-setting docutils literal notranslate\">OPTIONS</code></a>.</p></li>\n<li><p>Om du har anpassat inställningen <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\">MIDDLEWARE</code></a> måste <a class=\"reference internal\" href=\"/sv/6.1/ref/middleware/#django.contrib.sessions.middleware.SessionMiddleware\" title=\"django.contrib.sessions.middleware.SessionMiddleware\"><code class=\"xref py py-class docutils literal notranslate\">django.contrib.sessions.middleware.SessionMiddleware</code></a>, <a class=\"reference internal\" href=\"/sv/6.1/ref/middleware/#django.contrib.auth.middleware.AuthenticationMiddleware\" title=\"django.contrib.auth.middleware.AuthenticationMiddleware\"><code class=\"xref py py-class docutils literal notranslate\">django.contrib.auth.middleware.AuthenticationMiddleware</code></a> och <a class=\"reference internal\" href=\"/sv/6.1/ref/middleware/#django.contrib.messages.middleware.MessageMiddleware\" title=\"django.contrib.messages.middleware.MessageMiddleware\"><code class=\"xref py py-class docutils literal notranslate\">django.contrib.messages.middleware.MessageMiddleware</code></a> inkluderas.</p></li>\n<li><p><a class=\"reference internal\" href=\"#hooking-adminsite-to-urlconf\"><span class=\"std std-ref\">Haka på administratörens webbadresser i din URLconf</span></a>.</p></li>\n</ol>\n<p>När du har gjort det här kan du använda administratörswebbplatsen genom att besöka den URL som du har kopplat den till (<code class=\"docutils literal notranslate\">/admin/</code>, som standard).</p>\n<p>Om du behöver skapa en användare att logga in med använder du kommandot <a class=\"reference internal\" href=\"/sv/6.1/ref/django-admin/#django-admin-createsuperuser\"><code class=\"xref std std-djadmin docutils literal notranslate\">createsuperuser</code></a>. För att logga in på admin krävs som standard att användaren har attributet <a class=\"reference internal\" href=\"/sv/6.1/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\">is_staff</code></a> inställt på <code class=\"docutils literal notranslate\">True</code>.</p>\n<p>Slutligen ska du bestämma vilka av applikationens modeller som ska kunna redigeras i administratörsgränssnittet. För var och en av dessa modeller registrerar du dem med administratören enligt beskrivningen i <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\">ModelAdmin</code></a>.</p>\n<section id=\"other-topics\">\n<h3>Övriga ämnen<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=\"/sv/6.1/ref/contrib/admin/actions/\">Administrativa åtgärder</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/admin/filters/\"><code class=\"docutils literal notranslate\">ModelAdmin</code> Lista Filter</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/admin/admindocs/\">Generatorn för Django-administratörsdokumentation</a></li>\n<li class=\"toctree-l1\"><a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/admin/javascript/\">JavaScript-anpassningar i administratören</a></li>\n</ul>\n</div>\n<aside class=\"admonition admonition-seealso\" role=\"note\">\n<p class=\"admonition-title\">Se även</p>\n<p>Information om hur du serverar de statiska filer (bilder, JavaScript och CSS) som är kopplade till administratören i produktion finns i <a class=\"reference internal\" href=\"/sv/6.1/howto/deployment/wsgi/modwsgi/#serving-files\"><span class=\"std std-ref\">Servering av filer</span></a>.</p>\n<p>Har du problem?  Prova <a class=\"reference internal\" href=\"/sv/6.1/faq/admin/\"><span class=\"doc\">Frågor och svar: Admin</span></a>.</p>\n</aside>\n<aside class=\"admonition-there-are-community-maintained-solutions admonition\" role=\"note\">\n<p class=\"admonition-title\">Det finns lösningar som underhålls av communityn!</p>\n<p>Django har ett livskraftigt ekosystem. På sidan <a class=\"reference external\" href=\"https://www.djangoproject.com/community/ecosystem/#admin\">Community Ecosystem</a> lyfts lösningar för att anpassa och utöka administrationen fram. Django Packages <a class=\"reference external\" href=\"https://djangopackages.org/grids/g/admin-interface/\">Admin interface grid</a> ger dig ännu fler alternativ!</p>\n</aside>\n</section>\n</section>\n<section id=\"modeladmin-objects\">\n<h2><code class=\"docutils literal notranslate\">ModelAdmin</code>-objekt<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\">class</span> </em><span class=\"sig-name descname\">ModelAdmin</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>Klassen <code class=\"docutils literal notranslate\">ModelAdmin</code> är representationen av en modell i admin-gränssnittet. Vanligtvis lagras dessa i en fil med namnet <code class=\"docutils literal notranslate\">admin.py</code> i din applikation. Låt oss ta en titt på ett exempel på <code class=\"docutils literal notranslate\">ModelAdmin</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n<span class=\"kn\">from</span> <span class=\"nn\">myapp.models</span> <span class=\"kn\">import</span> Author\n\n\n<span class=\"k\">class</span> <span class=\"nc\">AuthorAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    <span class=\"k\">pass</span>\n\n\nadmin<span class=\"o\">.</span>site<span class=\"o\">.</span>register<span class=\"p\">(</span>Author<span class=\"p\">,</span> AuthorAdmin<span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"admonition-do-you-need-a-modeladmin-object-at-all admonition\" role=\"note\">\n<p class=\"admonition-title\">Behöver du ett <code class=\"docutils literal notranslate\">ModelAdmin</code>-objekt alls?</p>\n<p>I det föregående exemplet definierar klassen <code class=\"docutils literal notranslate\">ModelAdmin</code> inte några anpassade värden (ännu). Som ett resultat kommer standardadministratörsgränssnittet att tillhandahållas. Om du är nöjd med standardadministratörsgränssnittet behöver du inte definiera ett <code class=\"docutils literal notranslate\">ModelAdmin</code>-objekt alls - du kan registrera modellklassen utan att tillhandahålla en <code class=\"docutils literal notranslate\">ModelAdmin</code>-beskrivning. Det föregående exemplet kan förenklas till:</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n<span class=\"kn\">from</span> <span class=\"nn\">myapp.models</span> <span class=\"kn\">import</span> Author\n\nadmin<span class=\"o\">.</span>site<span class=\"o\">.</span>register<span class=\"p\">(</span>Author<span class=\"p\">)</span>\n</code></pre></div>\n</aside>\n</dd></dl>\n\n<section id=\"the-register-decorator\">\n<h3>Dekoratorn ”register<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\">register</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>models</em>, <em class=\"sig-param\">site<span class=\"o\">=</span><span class=\"default_value\">django.contrib.admin.sites.site</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>Det finns också en dekorator för att registrera dina <code class=\"docutils literal notranslate\">ModelAdmin</code>-klasser:</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n<span class=\"kn\">from</span> <span class=\"nn\">.models</span> <span class=\"kn\">import</span> Author\n\n\n<span class=\"nd\">@admin</span><span class=\"o\">.</span>register<span class=\"p\">(</span>Author<span class=\"p\">)</span>\n<span class=\"k\">class</span> <span class=\"nc\">AuthorAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    <span class=\"k\">pass</span>\n</code></pre></div>\n<p>Den får en eller flera modellklasser att registrera med <code class=\"docutils literal notranslate\">ModelAdmin</code>. Om du använder en anpassad <a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite\" title=\"django.contrib.admin.AdminSite\"><code class=\"xref py py-class docutils literal notranslate\">AdminSite</code></a>, skicka den med nyckelordsargumentet <code class=\"docutils literal notranslate\">site</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n<span class=\"kn\">from</span> <span class=\"nn\">.models</span> <span class=\"kn\">import</span> Author<span class=\"p\">,</span> Editor<span class=\"p\">,</span> Reader\n<span class=\"kn\">from</span> <span class=\"nn\">myproject.admin_site</span> <span class=\"kn\">import</span> custom_admin_site\n\n\n<span class=\"nd\">@admin</span><span class=\"o\">.</span>register<span class=\"p\">(</span>Author<span class=\"p\">,</span> Reader<span class=\"p\">,</span> Editor<span class=\"p\">,</span> site<span class=\"o\">=</span>custom_admin_site<span class=\"p\">)</span>\n<span class=\"k\">class</span> <span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    <span class=\"k\">pass</span>\n</code></pre></div>\n<p>Du kan inte använda denna dekorator om du måste referera till din modelladministratörsklass i dess <code class=\"docutils literal notranslate\">__init__()</code>-metod, t.ex. <code class=\"docutils literal notranslate\">super(PersonAdmin, self).__init__(*args, **kwargs)</code>. Du kan använda <code class=\"docutils literal notranslate\">super().__init__(*args, **kwargs)</code>.</p>\n</dd></dl>\n\n</section>\n<section id=\"discovery-of-admin-files\">\n<h3>Upptäckt av adminfiler<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>När du lägger till <code class=\"docutils literal notranslate\">'django.contrib.admin</code> i din <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a>-inställning, letar Django automatiskt efter en <code class=\"docutils literal notranslate\">admin</code>-modul i varje applikation och importerar den.</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\">class</span> </em><span class=\"sig-prename descclassname\">apps.</span><span class=\"sig-name descname\">AdminConfig</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>Detta är standardklassen <a class=\"reference internal\" href=\"/sv/6.1/ref/applications/#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a> för admin. Den anropar <a class=\"reference internal\" href=\"#django.contrib.admin.autodiscover\" title=\"django.contrib.admin.autodiscover\"><code class=\"xref py py-func docutils literal notranslate\">autodiscover()</code></a> när Django startar.</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\">class</span> </em><span class=\"sig-prename descclassname\">apps.</span><span class=\"sig-name descname\">SimpleAdminConfig</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>Den här klassen fungerar som <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\">AdminConfig</code></a>, men den anropar inte <a class=\"reference internal\" href=\"#django.contrib.admin.autodiscover\" title=\"django.contrib.admin.autodiscover\"><code class=\"xref py py-func docutils literal notranslate\">autodiscover()</code></a>.</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\">default_site</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>En prickad importsökväg till standardadministratörswebbplatsens klass eller till en anropsbar som returnerar en webbplatsinstans. Standard är <code class=\"docutils literal notranslate\">'django.contrib.admin.sites.AdminSite'</code>. Se <a class=\"reference internal\" href=\"#overriding-default-admin-site\"><span class=\"std std-ref\">Åsidosätta standardwebbplatsen för administratörer</span></a> för användning.</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\">autodiscover</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>Denna funktion försöker importera en ”admin”-modul i varje installerad applikation. Sådana moduler förväntas registrera modeller med administratören.</p>\n<p>Vanligtvis behöver du inte anropa den här funktionen direkt eftersom <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\">AdminConfig</code></a> anropar den när Django startar.</p>\n</dd></dl>\n\n<p>Om du använder en anpassad <code class=\"docutils literal notranslate\">AdminSite</code> är det vanligt att importera alla <code class=\"docutils literal notranslate\">ModelAdmin</code>-subklasser till din kod och registrera dem till den anpassade <code class=\"docutils literal notranslate\">AdminSite</code>. I det fallet, för att inaktivera automatisk upptäckt, bör du sätta <code class=\"docutils literal notranslate\">'django.contrib.admin.apps.SimpleAdminConfig'</code> istället för <code class=\"docutils literal notranslate\">'django.contrib.admin'</code> i din <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a> inställning.</p>\n</section>\n<section id=\"modeladmin-options\">\n<h3><code class=\"docutils literal notranslate\">ModelAdmin</code> alternativ<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\">ModelAdmin</code> är mycket flexibelt. Den har flera alternativ för att hantera anpassningen av gränssnittet. Alla alternativ är definierade i underklassen <code class=\"docutils literal notranslate\">ModelAdmin</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n\n\n<span class=\"k\">class</span> <span class=\"nc\">AuthorAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    date_hierarchy <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\">ModelAdmin.</span><span class=\"sig-name descname\">actions</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>En lista över åtgärder som ska göras tillgängliga på sidan med ändringslistan. Se <a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/admin/actions/\"><span class=\"doc\">Administrativa åtgärder</span></a> för mer information.</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\">ModelAdmin.</span><span class=\"sig-name descname\">actions_on_top</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\">ModelAdmin.</span><span class=\"sig-name descname\">actions_on_bottom</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>Styr var åtgärdsfältet visas på adminens ändringslistsida. Som standard visar adminens ändringslista åtgärder överst på sidan (<code class=\"docutils literal notranslate\">actions_on_top = True; actions_on_bottom = False</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\">ModelAdmin.</span><span class=\"sig-name descname\">actions_selection_counter</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>Styr om en urvalsräknare ska visas bredvid rullgardinsmenyn för åtgärder. Som standard visas den i admin-changellistan (<code class=\"docutils literal notranslate\">actions_selection_counter = True</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\">ModelAdmin.</span><span class=\"sig-name descname\">date_hierarchy</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>Ange <code class=\"docutils literal notranslate\">date_hierarchy</code> till namnet på en <code class=\"docutils literal notranslate\">DateField</code> eller <code class=\"docutils literal notranslate\">DateTimeField</code> i din modell, så kommer sidan med ändringslistan att innehålla en datumbaserad drilldown-navigering efter det fältet.</p>\n<p>Exempel:</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>date_hierarchy <span class=\"o\">=</span> <span class=\"s2\">&quot;pub_date&quot;</span>\n</code></pre></div>\n<p>Du kan också ange ett fält i en relaterad modell med hjälp av <code class=\"docutils literal notranslate\">__</code> lookup, till exempel:</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>date_hierarchy <span class=\"o\">=</span> <span class=\"s2\">&quot;author__pub_date&quot;</span>\n</code></pre></div>\n<p>Detta kommer att fylla i sig självt på ett intelligent sätt baserat på tillgängliga data, t.ex. om alla datum är i en månad kommer det bara att visa drill-down på dagsnivå.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p><code class=\"docutils literal notranslate\">date_hierarchy</code> använder <a class=\"reference internal\" href=\"/sv/6.1/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\">QuerySet.datetimes()</code></a> internt. Se dess dokumentation för vissa försiktighetsåtgärder när stöd för tidszoner är aktiverat (<a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\">USE_TZ = True</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\">ModelAdmin.</span><span class=\"sig-name descname\">empty_value_display</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>Detta attribut åsidosätter standardvisningsvärdet för postfält som är tomma (<code class=\"docutils literal notranslate\">None</code>, tom sträng, etc.). Standardvärdet är <code class=\"docutils literal notranslate\">-</code> (ett streck). Till exempel:</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n\n\n<span class=\"k\">class</span> <span class=\"nc\">AuthorAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    empty_value_display <span class=\"o\">=</span> <span class=\"s2\">&quot;-empty-&quot;</span>\n</code></pre></div>\n<p>Du kan också åsidosätta <code class=\"docutils literal notranslate\">empty_value_display</code> för alla adminsidor med <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\">AdminSite.empty_value_display</code></a>, eller för specifika fält så här:</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n\n\n<span class=\"k\">class</span> <span class=\"nc\">AuthorAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    list_display <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>display<span class=\"p\">(</span>empty_value<span class=\"o\">=</span><span class=\"s2\">&quot;???&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">def</span> <span class=\"nf\">view_birth_date</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> obj<span class=\"p\">):</span>\n        <span class=\"k\">return</span> obj<span class=\"o\">.</span>birth_date\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\">ModelAdmin.</span><span class=\"sig-name descname\">exclude</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>Detta attribut, om det anges, bör vara en lista över fältnamn som ska uteslutas från formuläret.</p>\n<p>Låt oss till exempel betrakta följande modell:</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=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Author</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">100</span><span class=\"p\">)</span>\n    title <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">3</span><span class=\"p\">)</span>\n    birth_date <span class=\"o\">=</span> models<span class=\"o\">.</span>DateField<span class=\"p\">(</span>blank<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span> null<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Om du vill ha ett formulär för modellen <code class=\"docutils literal notranslate\">Author</code> som bara innehåller fälten <code class=\"docutils literal notranslate\">name</code> och <code class=\"docutils literal notranslate\">title</code> anger du <code class=\"docutils literal notranslate\">fields</code> eller <code class=\"docutils literal notranslate\">exclude</code> så här:</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n\n\n<span class=\"k\">class</span> <span class=\"nc\">AuthorAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    fields <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=\"nc\">AuthorAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    exclude <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>Eftersom modellen Author bara har tre fält, <code class=\"docutils literal notranslate\">name</code>, <code class=\"docutils literal notranslate\">title</code> och <code class=\"docutils literal notranslate\">birth_date</code>, kommer de formulär som blir resultatet av ovanstående deklarationer att innehålla exakt samma fält.</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\">ModelAdmin.</span><span class=\"sig-name descname\">fields</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>Använd alternativet <code class=\"docutils literal notranslate\">fields</code> för att göra enkla layoutändringar i formulären på sidorna ”add” och ”change”, till exempel att bara visa en delmängd av tillgängliga fält, ändra deras ordning eller gruppera dem i rader. Du kan till exempel definiera en enklare version av adminformuläret för modellen <a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/flatpages/#django.contrib.flatpages.models.FlatPage\" title=\"django.contrib.flatpages.models.FlatPage\"><code class=\"xref py py-class docutils literal notranslate\">django.contrib.flatpages.models.FlatPage</code></a> enligt följande:</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=\"nc\">FlatPageAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    fields <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>I exemplet ovan visas endast fälten <code class=\"docutils literal notranslate\">url</code>, <code class=\"docutils literal notranslate\">title</code> och <code class=\"docutils literal notranslate\">content</code> i tur och ordning i formuläret. <code class=\"docutils literal notranslate\">fields</code> kan innehålla värden som definieras i <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\">ModelAdmin.readonly_fields</code></a> för att visas som skrivskyddade.</p>\n<p>För mer komplexa layoutbehov, se alternativet <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\">fieldsets</code></a>.</p>\n<p>Alternativet <code class=\"docutils literal notranslate\">fields</code> accepterar samma typer av värden som <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\">list_display</code></a>, förutom att callables och <code class=\"docutils literal notranslate\">__</code>-uppslagningar för relaterade fält inte accepteras. Namn på modell- och modelladministrationsmetoder kommer endast att användas om de listas i <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\">readonly_fields</code></a>.</p>\n<p>Om du vill visa flera fält på samma rad, paketerar du fälten i en egen tupel. I det här exemplet kommer fälten <code class=\"docutils literal notranslate\">url</code> och <code class=\"docutils literal notranslate\">title</code> att visas på samma rad och fältet <code class=\"docutils literal notranslate\">content</code> kommer att visas under dem på en egen rad:</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=\"nc\">FlatPageAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    fields <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\" role=\"note\">\n<p class=\"admonition-title\">Möjlig förvirring med alternativet <code class=\"docutils literal notranslate\">ModelAdmin.fieldsets</code></p>\n<p>Det här alternativet <code class=\"docutils literal notranslate\">fields</code> ska inte förväxlas med ordboksnyckeln <code class=\"docutils literal notranslate\">fields</code> som finns i alternativet <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\">fieldsets</code></a>, som beskrivs i nästa avsnitt.</p>\n</aside>\n<p>Om varken <code class=\"docutils literal notranslate\">fields</code> eller <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\">fieldsets</code></a>-alternativen är närvarande, kommer Django som standard att visa varje fält som inte är ett <code class=\"docutils literal notranslate\">AutoField</code> och har <code class=\"docutils literal notranslate\">editable=True</code>, i en enda fieldset, i samma ordning som fälten definieras i modellen, följt av alla fält som definieras i <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\">readonly_fields</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\">ModelAdmin.</span><span class=\"sig-name descname\">fieldsets</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>Ställ in <code class=\"docutils literal notranslate\">fieldsets</code> för att styra layouten på adminsidorna ”add” och ”change”.</p>\n<p><code class=\"docutils literal notranslate\">fieldsets</code> är en lista med 2-tupler, där varje 2-tupel representerar en <code class=\"docutils literal notranslate\">&lt;fieldset&gt;</code> på sidan med adminformuläret. (En <code class=\"docutils literal notranslate\">&lt;fieldset&gt;</code> är en ”sektion” av formuläret.)</p>\n<p>De 2-tuplarna är i formatet <code class=\"docutils literal notranslate\">(name, field_options)</code>, där <code class=\"docutils literal notranslate\">name</code> är en sträng som representerar titeln på fieldset och <code class=\"docutils literal notranslate\">field_options</code> är en ordbok med information om fieldset, inklusive en lista över fält som ska visas i det.</p>\n<p>Ett fullständigt exempel, hämtat från modellen <a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/flatpages/#django.contrib.flatpages.models.FlatPage\" title=\"django.contrib.flatpages.models.FlatPage\"><code class=\"xref py py-class docutils literal notranslate\">django.contrib.flatpages.models.FlatPage</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n\n\n<span class=\"k\">class</span> <span class=\"nc\">FlatPageAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    fieldsets <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>Detta resulterar i en administratörssida som ser ut som följer:</p>\n<img alt=\"/sv/6.1/_images/fieldsets.png\" src=\"/sv/6.1/_images/fieldsets.png\" />\n<p>Om varken <code class=\"docutils literal notranslate\">fieldsets</code> eller <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\">fields</code></a>-alternativen är närvarande, kommer Django som standard att visa varje fält som inte är ett <code class=\"docutils literal notranslate\">AutoField</code> och har <code class=\"docutils literal notranslate\">editable=True</code>, i ett enda fieldset, i samma ordning som fälten definieras i modellen.</p>\n<p>Ordlistan <code class=\"docutils literal notranslate\">field_options</code> kan ha följande nycklar:</p>\n<ul>\n<li><dl>\n<dt><code class=\"docutils literal notranslate\">fält</code></dt><dd><p>En lista eller tupel med fältnamn som ska visas i denna fieldset. Denna nyckel är obligatorisk.</p>\n<p>Exempel:</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>Precis som med alternativet <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\">fields</code></a> kan du visa flera fält på samma rad genom att lägga in fälten i en egen tupel. I det här exemplet kommer fälten <code class=\"docutils literal notranslate\">first_name</code> och <code class=\"docutils literal notranslate\">last_name</code> att visas på samma rad:</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\">fields</code> kan innehålla värden som definieras i <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\">readonly_fields</code></a> för att visas som skrivskyddade.</p>\n<p>Om du lägger till namnet på en callable i <code class=\"docutils literal notranslate\">fields</code> gäller samma regel som med alternativet <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\">fields</code></a>: callable måste listas i <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\">readonly_fields</code></a>.</p>\n</dd>\n</dl>\n</li>\n<li><dl>\n<dt><code class=\"docutils literal notranslate\">klasser</code></dt><dd><p>En lista eller tupel med extra CSS-klasser som ska tillämpas på fältuppsättningen. Den kan innehålla valfri anpassad CSS-klass som definieras i projektet, liksom CSS-klassen som tillhandahålls av Django: <code class=\"docutils literal notranslate\">collapse</code>.</p>\n<p>Exempel:</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;collapse&quot;</span><span class=\"p\">],</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p>Fältuppsättningar med ett namn och stilen <code class=\"docutils literal notranslate\">collapse</code> är inledningsvis hopfällda och använder en expanderbar widget med en växlare för att ändra deras synlighet.</p>\n<aside class=\"version-note version-changed\" data-version=\"6.1\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 6.1</p><p>Klassen <code class=\"docutils literal notranslate\">wide</code> har tagits bort eftersom den blev föråldrad av den nya adminlayouten.</p>\n</aside>\n</dd>\n</dl>\n</li>\n<li><dl>\n<dt><code class=\"docutils literal notranslate\">Beskrivning</code></dt><dd><p>En sträng med valfri extra text som ska visas högst upp i varje fältmängd, under fältmängdens rubrik.</p>\n<p>Observera att detta värde <em>inte</em> är HTML-escaped när det visas i admin-gränssnittet. Detta gör att du kan inkludera HTML om du så önskar. Alternativt kan du använda vanlig text och <a class=\"reference internal\" href=\"/sv/6.1/ref/utils/#django.utils.html.escape\" title=\"django.utils.html.escape\"><code class=\"xref py py-func docutils literal notranslate\">django.utils.html.escape()</code></a> för att undkomma eventuella HTML-specialtecken.</p>\n</dd>\n</dl>\n</li>\n</ul>\n<aside class=\"admonition-class-django-contrib-admin-tabularinline-has-limited-support-for-fieldsets admonition\" role=\"note\">\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\">TabularInline</code></a> har begränsat stöd för <code class=\"docutils literal notranslate\">fieldsets</code></p>\n<p>Att använda <code class=\"docutils literal notranslate\">fieldsets</code> med <a class=\"reference internal\" href=\"#django.contrib.admin.TabularInline\" title=\"django.contrib.admin.TabularInline\"><code class=\"xref py py-class docutils literal notranslate\">TabularInline</code></a> har begränsad funktionalitet. Du kan ange vilka fält som ska visas och deras ordning inom layouten <code class=\"docutils literal notranslate\">TabularInline</code> genom att definiera <code class=\"docutils literal notranslate\">fields</code> i ordlistan <code class=\"docutils literal notranslate\">field_options</code>.</p>\n<p>Alla andra funktioner stöds inte. Detta inkluderar användning av <code class=\"docutils literal notranslate\">name</code> för att definiera en titel för en grupp fält.</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\">ModelAdmin.</span><span class=\"sig-name descname\">filter_horizontal</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>Som standard visas en <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> på administratörssidan med en <code class=\"docutils literal notranslate\">&lt;select multiple&gt;</code>. Flervalslådor kan dock vara svåra att använda när man väljer många objekt. Om du lägger till en <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> till den här listan används istället ett snyggt, diskret JavaScript-”filter”-gränssnitt som gör det möjligt att söka bland alternativen. De omarkerade och markerade alternativen visas i två rutor sida vid sida. Se <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\">filter_vertical</code></a> för att använda ett vertikalt gränssnitt.</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\">ModelAdmin.</span><span class=\"sig-name descname\">filter_vertical</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>Samma som <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\">filter_horizontal</code></a>, men använder en vertikal visning av filtergränssnittet där rutan med omarkerade alternativ visas ovanför rutan med markerade alternativ.</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\">ModelAdmin.</span><span class=\"sig-name descname\">form</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>Som standard skapas ett <code class=\"docutils literal notranslate\">ModelForm</code> dynamiskt för din modell. Det används för att skapa formuläret som visas på både tilläggs- och ändringssidorna. Du kan enkelt tillhandahålla din egen <code class=\"docutils literal notranslate\">ModelForm</code> för att åsidosätta alla standardformulärbeteenden på tilläggs-/ändringssidorna. Alternativt kan du anpassa standardformuläret i stället för att ange ett helt nytt genom att använda metoden <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\">ModelAdmin.get_form()</code></a>.</p>\n<p>För ett exempel, se avsnittet <a class=\"reference internal\" href=\"#admin-custom-validation\"><span class=\"std std-ref\">Lägga till anpassad validering i admin</span></a>.</p>\n<aside class=\"admonition-omit-the-meta-model-attribute admonition\" role=\"note\">\n<p class=\"admonition-title\">Utelämna attributet <code class=\"docutils literal notranslate\">Meta.model</code></p>\n<p>Om du definierar attributet <code class=\"docutils literal notranslate\">Meta.model</code> på en <a class=\"reference internal\" href=\"/sv/6.1/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\">ModelForm</code></a>, måste du också definiera attributet <code class=\"docutils literal notranslate\">Meta.fields</code> (eller attributet <code class=\"docutils literal notranslate\">Meta.exclude</code>). Men eftersom administratören har sitt eget sätt att definiera fält kommer attributet <code class=\"docutils literal notranslate\">Meta.fields</code> att ignoreras.</p>\n<p>Om <code class=\"docutils literal notranslate\">ModelForm</code> bara ska användas för administratören är den enklaste lösningen att utelämna attributet <code class=\"docutils literal notranslate\">Meta.model</code>, eftersom <code class=\"docutils literal notranslate\">ModelAdmin</code> kommer att tillhandahålla rätt modell att använda. Alternativt kan du ställa in <code class=\"docutils literal notranslate\">fields = []</code> i klassen <code class=\"docutils literal notranslate\">Meta</code> för att uppfylla valideringen på <code class=\"docutils literal notranslate\">ModelForm</code>.</p>\n</aside>\n<aside class=\"admonition-modeladmin-exclude-takes-precedence admonition\" role=\"note\">\n<p class=\"admonition-title\"><code class=\"docutils literal notranslate\">ModelAdmin.exclude</code> har företräde</p>\n<p>Om både <code class=\"docutils literal notranslate\">ModelForm</code> och <code class=\"docutils literal notranslate\">ModelAdmin</code> definierar ett <code class=\"docutils literal notranslate\">exclude</code>-alternativ har <code class=\"docutils literal notranslate\">ModelAdmin</code> företräde:</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=\"nn\">django</span> <span class=\"kn\">import</span> forms\n<span class=\"kn\">from</span> <span class=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n<span class=\"kn\">from</span> <span class=\"nn\">myapp.models</span> <span class=\"kn\">import</span> Person\n\n\n<span class=\"k\">class</span> <span class=\"nc\">PersonForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>ModelForm<span class=\"p\">):</span>\n    <span class=\"k\">class</span> <span class=\"nc\">Meta</span><span class=\"p\">:</span>\n        model <span class=\"o\">=</span> Person\n        exclude <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=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    exclude <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;age&quot;</span><span class=\"p\">]</span>\n    form <span class=\"o\">=</span> PersonForm\n</code></pre></div>\n<p>I exemplet ovan kommer fältet ”age” att uteslutas, men fältet ”name” kommer att ingå i det genererade formuläret.</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\">ModelAdmin.</span><span class=\"sig-name descname\">formfield_overrides</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>Detta ger ett snabbt och enkelt sätt att åsidosätta några av <a class=\"reference internal\" href=\"/sv/6.1/ref/forms/fields/#django.forms.Field\" title=\"django.forms.Field\"><code class=\"xref py py-class docutils literal notranslate\">Field</code></a>-alternativen för användning i admin. <code class=\"docutils literal notranslate\">formfield_overrides</code> är en ordbok som mappar en fältklass till en dikt av argument som ska skickas till fältet vid konstruktionstid.</p>\n<p>Eftersom det är lite abstrakt, låt oss titta på ett konkret exempel. Den vanligaste användningen av <code class=\"docutils literal notranslate\">formfield_overrides</code> är att lägga till en anpassad widget för en viss typ av fält. Så, tänk dig att vi har skrivit en <code class=\"docutils literal notranslate\">RichTextEditorWidget</code> som vi skulle vilja använda för stora textfält istället för standard <code class=\"docutils literal notranslate\">&lt;textarea&gt;</code>. Så här skulle vi göra det:</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n<span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\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=\"nn\">myapp.models</span> <span class=\"kn\">import</span> MyModel\n<span class=\"kn\">from</span> <span class=\"nn\">myapp.widgets</span> <span class=\"kn\">import</span> RichTextEditorWidget\n\n\n<span class=\"k\">class</span> <span class=\"nc\">MyModelAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    formfield_overrides <span class=\"o\">=</span> <span class=\"p\">{</span>\n        models<span class=\"o\">.</span>TextField<span class=\"p\">:</span> <span class=\"p\">{</span><span class=\"s2\">&quot;widget&quot;</span><span class=\"p\">:</span> RichTextEditorWidget<span class=\"p\">},</span>\n    <span class=\"p\">}</span>\n</code></pre></div>\n<p>Observera att nyckeln i ordlistan är den faktiska fältklassen, <em>inte</em> en sträng. Värdet är en annan dictionary; dessa argument kommer att skickas till formulärfältets <code class=\"docutils literal notranslate\">__init__()</code>-metod. Se <a class=\"reference internal\" href=\"/sv/6.1/ref/forms/api/\"><span class=\"doc\">API för formulär</span></a> för mer information.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>Om du vill använda en anpassad widget med ett relationsfält (dvs. <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> eller <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a>), se till att du inte har inkluderat fältets namn i <code class=\"docutils literal notranslate\">raw_id_fields</code>, <code class=\"docutils literal notranslate\">radio_fields</code> eller <code class=\"docutils literal notranslate\">autocomplete_fields</code>.</p>\n<p><code class=\"docutils literal notranslate\">formfield_overrides</code> låter dig inte ändra widgeten på relationsfält som har <code class=\"docutils literal notranslate\">raw_id_fields</code>, <code class=\"docutils literal notranslate\">radio_fields</code> eller <code class=\"docutils literal notranslate\">autocomplete_fields</code> inställda. Det beror på att <code class=\"docutils literal notranslate\">raw_id_fields</code>, <code class=\"docutils literal notranslate\">radio_fields</code> och <code class=\"docutils literal notranslate\">autocomplete_fields</code> innebär egna anpassade widgetar.</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\">ModelAdmin.</span><span class=\"sig-name descname\">inlines</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>Se <a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin\" title=\"django.contrib.admin.InlineModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\">InlineModelAdmin</code></a>-objekt nedan samt <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\">ModelAdmin.get_formsets_with_inlines()</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\">ModelAdmin.</span><span class=\"sig-name descname\">list_display</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>Ställ in <code class=\"docutils literal notranslate\">list_display</code> för att styra vilka fält som ska visas på sidan med ändringslistan i admin.</p>\n<p>Exempel:</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>list_display <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>Om du inte ställer in <code class=\"docutils literal notranslate\">list_display</code> kommer administratörssidan att visa en enda kolumn som visar <code class=\"docutils literal notranslate\">__str__()</code>-representationen av varje objekt.</p>\n<p>Det finns fem typer av värden som kan användas i <code class=\"docutils literal notranslate\">list_display</code>. Alla utom den enklaste kan använda <a class=\"reference internal\" href=\"#django.contrib.admin.display\" title=\"django.contrib.admin.display\"><code class=\"xref py py-func docutils literal notranslate\">display()</code></a>-dekoratorn, som används för att anpassa hur fältet presenteras:</p>\n<ul>\n<li><p>Namnet på ett modellfält. Till exempel:</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=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    list_display <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>Namnet på ett relaterat fält med hjälp av notationen <code class=\"docutils literal notranslate\">__</code>. Till exempel:</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=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    list_display <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>En anropsbar funktion som accepterar ett argument, modellinstansen. Till exempel:</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>display<span class=\"p\">(</span>description<span class=\"o\">=</span><span class=\"s2\">&quot;Name&quot;</span><span class=\"p\">)</span>\n<span class=\"k\">def</span> <span class=\"nf\">upper_case_name</span><span class=\"p\">(</span>obj<span class=\"p\">):</span>\n    <span class=\"k\">return</span> <span class=\"sa\">f</span><span class=\"s2\">&quot;</span><span class=\"si\">{</span>obj<span class=\"o\">.</span>first_name<span class=\"si\">}</span><span class=\"s2\"> </span><span class=\"si\">{</span>obj<span class=\"o\">.</span>last_name<span class=\"si\">}</span><span class=\"s2\">&quot;</span><span class=\"o\">.</span>upper<span class=\"p\">()</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    list_display <span class=\"o\">=</span> <span class=\"p\">[</span>upper_case_name<span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p>En sträng som representerar en <code class=\"docutils literal notranslate\">ModelAdmin</code>-metod som accepterar ett argument, modellinstansen. Till exempel:</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=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    list_display <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>display<span class=\"p\">(</span>description<span class=\"o\">=</span><span class=\"s2\">&quot;Name&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">def</span> <span class=\"nf\">upper_case_name</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> obj<span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"sa\">f</span><span class=\"s2\">&quot;</span><span class=\"si\">{</span>obj<span class=\"o\">.</span>first_name<span class=\"si\">}</span><span class=\"s2\"> </span><span class=\"si\">{</span>obj<span class=\"o\">.</span>last_name<span class=\"si\">}</span><span class=\"s2\">&quot;</span><span class=\"o\">.</span>upper<span class=\"p\">()</span>\n</code></pre></div>\n</li>\n<li><p>En sträng som representerar ett modellattribut eller en metod (utan några obligatoriska argument). Till exempel:</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n<span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Person</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n    birthday <span class=\"o\">=</span> models<span class=\"o\">.</span>DateField<span class=\"p\">()</span>\n\n    <span class=\"nd\">@admin</span><span class=\"o\">.</span>display<span class=\"p\">(</span>description<span class=\"o\">=</span><span class=\"s2\">&quot;Birth decade&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">def</span> <span class=\"nf\">decade_born_in</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        decade <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span>birthday<span class=\"o\">.</span>year <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>decade<span class=\"si\">}</span><span class=\"s2\">’s&quot;</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    list_display <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>Några specialfall att notera om <code class=\"docutils literal notranslate\">list_display</code>:</p>\n<ul>\n<li><p>Om fältet är en <code class=\"docutils literal notranslate\">ForeignKey</code>, kommer Django att visa <code class=\"docutils literal notranslate\">__str__()</code> för det relaterade objektet.</p></li>\n<li><p>fält av typen <code class=\"docutils literal notranslate\">ManyToManyField</code> stöds inte, eftersom det skulle innebära att en separat SQL-sats måste köras för varje rad i tabellen. Om du ändå vill göra det här kan du ge din modell en anpassad metod och lägga till metodens namn i <code class=\"docutils literal notranslate\">list_display</code>. (Se nedan för mer information om anpassade metoder i <code class=\"docutils literal notranslate\">list_display</code>)</p></li>\n<li><p>Om fältet är en <code class=\"docutils literal notranslate\">BooleanField</code>, kommer Django att visa en vacker ”ja”, ”nej” eller ”okänd” ikon istället för <code class=\"docutils literal notranslate\">True</code>, <code class=\"docutils literal notranslate\">False</code> eller <code class=\"docutils literal notranslate\">None</code>.</p></li>\n<li><p>Om den angivna strängen är en metod för modellen, <code class=\"docutils literal notranslate\">ModelAdmin</code> eller en anropsbar, kommer Django att HTML-escape utdata som standard. Använd <a class=\"reference internal\" href=\"/sv/6.1/ref/utils/#django.utils.html.format_html\" title=\"django.utils.html.format_html\"><code class=\"xref py py-func docutils literal notranslate\">format_html()</code></a> för att undkomma användarens inmatning och tillåta dina egna taggar som inte är escapade.</p>\n<p>Här är ett fullständigt exempel på en modell:</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n<span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n<span class=\"kn\">from</span> <span class=\"nn\">django.utils.html</span> <span class=\"kn\">import</span> format_html\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Person</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    first_name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n    last_name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n    color_code <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">6</span><span class=\"p\">)</span>\n\n    <span class=\"nd\">@admin</span><span class=\"o\">.</span>display\n    <span class=\"k\">def</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> format_html<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>color_code<span class=\"p\">,</span>\n            <span class=\"bp\">self</span><span class=\"o\">.</span>first_name<span class=\"p\">,</span>\n            <span class=\"bp\">self</span><span class=\"o\">.</span>last_name<span class=\"p\">,</span>\n        <span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    list_display <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>Som några exempel redan har visat, när du använder en anropbar, en modellmetod eller en <code class=\"docutils literal notranslate\">ModelAdmin</code>-metod, kan du anpassa kolumnens titel genom att linda in den anropbara med <a class=\"reference internal\" href=\"#django.contrib.admin.display\" title=\"django.contrib.admin.display\"><code class=\"xref py py-func docutils literal notranslate\">display()</code></a>-dekoratorn och skicka argumentet <code class=\"docutils literal notranslate\">description</code>.</p></li>\n<li><p>Om värdet på ett fält är <code class=\"docutils literal notranslate\">None</code>, en tom sträng eller en iterabel utan element, kommer Django att visa <code class=\"docutils literal notranslate\">-</code> (ett streck). Du kan åsidosätta detta med <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\">AdminSite.empty_value_display</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n\nadmin<span class=\"o\">.</span>site<span class=\"o\">.</span>empty_value_display <span class=\"o\">=</span> <span class=\"s2\">&quot;(None)&quot;</span>\n</code></pre></div>\n<p>Du kan också använda <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\">ModelAdmin.empty_value_display</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=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    empty_value_display <span class=\"o\">=</span> <span class=\"s2\">&quot;unknown&quot;</span>\n</code></pre></div>\n<p>Eller på fältnivå:</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=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    list_display <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>display<span class=\"p\">(</span>empty_value<span class=\"o\">=</span><span class=\"s2\">&quot;unknown&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">def</span> <span class=\"nf\">birth_date_view</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> obj<span class=\"p\">):</span>\n        <span class=\"k\">return</span> obj<span class=\"o\">.</span>birth_date\n</code></pre></div>\n</li>\n<li><p>Om den angivna strängen är en metod för modellen, <code class=\"docutils literal notranslate\">ModelAdmin</code> eller en anropsbar som returnerar <code class=\"docutils literal notranslate\">True</code>, <code class=\"docutils literal notranslate\">False</code> eller <code class=\"docutils literal notranslate\">None</code>, kommer Django att visa en vacker ”ja”, ”nej” eller ”okänd” ikon om du lindar in metoden med <a class=\"reference internal\" href=\"#django.contrib.admin.display\" title=\"django.contrib.admin.display\"><code class=\"xref py py-func docutils literal notranslate\">display()</code></a> dekoratorn som passerar <code class=\"docutils literal notranslate\">boolean</code> argumentet med värdet inställt på <code class=\"docutils literal notranslate\">True</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n<span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Person</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    first_name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n    birthday <span class=\"o\">=</span> models<span class=\"o\">.</span>DateField<span class=\"p\">()</span>\n\n    <span class=\"nd\">@admin</span><span class=\"o\">.</span>display<span class=\"p\">(</span>boolean<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n    <span class=\"k\">def</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>birthday<span class=\"o\">.</span>year <span class=\"o\">&lt;</span> <span class=\"mi\">1960</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    list_display <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>Metoden <code class=\"docutils literal notranslate\">__str__()</code> är precis lika giltig i <code class=\"docutils literal notranslate\">list_display</code> som alla andra modellmetoder, så det är helt OK att göra detta:</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>list_display <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>Vanligtvis kan element i <code class=\"docutils literal notranslate\">list_display</code> som inte är faktiska databasfält inte användas i sortering (eftersom Django gör all sortering på databasnivå).</p>\n<p>Men om ett element i <code class=\"docutils literal notranslate\">list_display</code> representerar ett visst databasfält kan du ange detta genom att använda <a class=\"reference internal\" href=\"#django.contrib.admin.display\" title=\"django.contrib.admin.display\"><code class=\"xref py py-func docutils literal notranslate\">display()</code></a>-dekoratorn på metoden och skicka argumentet <code class=\"docutils literal notranslate\">ordering</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n<span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n<span class=\"kn\">from</span> <span class=\"nn\">django.utils.html</span> <span class=\"kn\">import</span> format_html\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Person</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    first_name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n    color_code <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">6</span><span class=\"p\">)</span>\n\n    <span class=\"nd\">@admin</span><span class=\"o\">.</span>display<span class=\"p\">(</span>ordering<span class=\"o\">=</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">def</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> format_html<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>color_code<span class=\"p\">,</span>\n            <span class=\"bp\">self</span><span class=\"o\">.</span>first_name<span class=\"p\">,</span>\n        <span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    list_display <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>Ovanstående kommer att tala om för Django att ordna efter fältet <code class=\"docutils literal notranslate\">förnamn</code> när man försöker sortera efter <code class=\"docutils literal notranslate\">färgat_förnamn</code> i admin.</p>\n<p>För att ange fallande ordning med argumentet <code class=\"docutils literal notranslate\">ordering</code> kan du använda ett bindestrecksprefix på fältnamnet. Med hjälp av ovanstående exempel skulle detta se ut som:</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>display<span class=\"p\">(</span>ordering<span class=\"o\">=</span><span class=\"s2\">&quot;-first_name&quot;</span><span class=\"p\">)</span>\n<span class=\"k\">def</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>Argumentet <code class=\"docutils literal notranslate\">ordering</code> stöder frågeuppslagningar för att sortera efter värden i relaterade modeller. Detta exempel innehåller en kolumn ”författarens förnamn” i listvisningen och gör det möjligt att sortera den efter förnamn:</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=\"nc\">Blog</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    title <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">255</span><span class=\"p\">)</span>\n    author <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>Person<span class=\"p\">,</span> on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">BlogAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    list_display <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>display<span class=\"p\">(</span>ordering<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=\"nf\">author_first_name</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> obj<span class=\"p\">):</span>\n        <span class=\"k\">return</span> obj<span class=\"o\">.</span>author<span class=\"o\">.</span>first_name\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"/sv/6.1/ref/models/expressions/\"><span class=\"doc\">Query expressions</span></a> kan användas med argumentet <code class=\"docutils literal notranslate\">ordering</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=\"nn\">django.db.models</span> <span class=\"kn\">import</span> Value\n<span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Concat\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Person</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    first_name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n    last_name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n\n    <span class=\"nd\">@admin</span><span class=\"o\">.</span>display<span class=\"p\">(</span>ordering<span class=\"o\">=</span>Concat<span class=\"p\">(</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">,</span> Value<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=\"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>first_name <span class=\"o\">+</span> <span class=\"s2\">&quot; &quot;</span> <span class=\"o\">+</span> <span class=\"bp\">self</span><span class=\"o\">.</span>last_name\n</code></pre></div>\n</li>\n<li><p>Element i <code class=\"docutils literal notranslate\">list_display</code> kan också vara egenskaper</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=\"nc\">Person</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    first_name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n    last_name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<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>display<span class=\"p\">(</span>\n        ordering<span class=\"o\">=</span><span class=\"s2\">&quot;last_name&quot;</span><span class=\"p\">,</span>\n        description<span class=\"o\">=</span><span class=\"s2\">&quot;Full name of the person&quot;</span><span class=\"p\">,</span>\n        boolean<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=\"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>first_name <span class=\"o\">+</span> <span class=\"s2\">&quot; &quot;</span> <span class=\"o\">+</span> <span class=\"bp\">self</span><span class=\"o\">.</span>last_name\n\n\n<span class=\"k\">class</span> <span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    list_display <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>Observera att <code class=\"docutils literal notranslate\">&#64;property</code> måste stå över <code class=\"docutils literal notranslate\">&#64;display</code>. Om du använder det gamla sättet - att ställa in de display-relaterade attributen direkt istället för att använda <a class=\"reference internal\" href=\"#django.contrib.admin.display\" title=\"django.contrib.admin.display\"><code class=\"xref py py-func docutils literal notranslate\">display()</code></a>-dekoratorn - var medveten om att funktionen <code class=\"docutils literal notranslate\">property()</code> och <strong>inte</strong> <code class=\"docutils literal notranslate\">&#64;property</code>-dekoratorn måste användas:</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=\"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>first_name <span class=\"o\">+</span> <span class=\"s2\">&quot; &quot;</span> <span class=\"o\">+</span> <span class=\"bp\">self</span><span class=\"o\">.</span>last_name\n\n\nmy_property<span class=\"o\">.</span>short_description <span class=\"o\">=</span> <span class=\"s2\">&quot;Full name of the person&quot;</span>\nmy_property<span class=\"o\">.</span>admin_order_field <span class=\"o\">=</span> <span class=\"s2\">&quot;last_name&quot;</span>\nmy_property<span class=\"o\">.</span>boolean <span class=\"o\">=</span> <span class=\"kc\">False</span>\n\nfull_name <span class=\"o\">=</span> <span class=\"nb\">property</span><span class=\"p\">(</span>my_property<span class=\"p\">)</span>\n</code></pre></div>\n</li>\n<li><p>Fältnamnen i <code class=\"docutils literal notranslate\">list_display</code> kommer också att visas som CSS-klasser i HTML-utdata, i form av <code class=\"docutils literal notranslate\">column-&lt;field_name&gt;</code> på varje <code class=\"docutils literal notranslate\">&lt;th&gt;</code>-element. Detta kan till exempel användas för att ställa in kolumnbredder i en CSS-fil.</p></li>\n<li><p>Django kommer att försöka tolka varje element i <code class=\"docutils literal notranslate\">list_display</code> i denna ordning:</p>\n<ul class=\"simple\">\n<li><p>Ett område av modellen eller från ett relaterat område.</p></li>\n<li><p>En anropsbar enhet.</p></li>\n<li><p>En sträng som representerar ett <code class=\"docutils literal notranslate\">ModelAdmin</code>-attribut.</p></li>\n<li><p>En sträng som representerar ett modellattribut.</p></li>\n</ul>\n<p>Om du t.ex. har <code class=\"docutils literal notranslate\">first_name</code> som ett modellfält och som ett <code class=\"docutils literal notranslate\">ModelAdmin</code>-attribut, kommer modellfältet att användas.</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\">ModelAdmin.</span><span class=\"sig-name descname\">list_display_links</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>Använd <code class=\"docutils literal notranslate\">list_display_links</code> för att styra om och vilka fält i <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\">list_display</code></a> som ska länkas till ”change”-sidan för ett objekt.</p>\n<p>Som standard kommer sidan med ändringslistan att länka den första kolumnen - det första fältet som anges i <code class=\"docutils literal notranslate\">list_display</code> - till ändringssidan för varje objekt. Men med <code class=\"docutils literal notranslate\">list_display_links</code> kan du ändra detta:</p>\n<ul>\n<li><p>Ställ in den på <code class=\"docutils literal notranslate\">None</code> för att inte få några länkar alls.</p></li>\n<li><p>Ange en lista eller tupel av fält (i samma format som <code class=\"docutils literal notranslate\">list_display</code>) vars kolumner du vill konvertera till länkar.</p>\n<p>Du kan ange ett eller flera fält. Så länge fälten visas i <code class=\"docutils literal notranslate\">list_display</code> bryr sig Django inte om hur många (eller hur få) fält som är länkade. Det enda kravet är att om du vill använda <code class=\"docutils literal notranslate\">list_display_links</code> på det här sättet måste du definiera <code class=\"docutils literal notranslate\">list_display</code>.</p>\n</li>\n</ul>\n<p>I det här exemplet kommer fälten ”förnamn” och ”efternamn” att länkas på sidan för ändringslistan:</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=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    list_display <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    list_display_links <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>I det här exemplet har rutnätet för sidan med ändringslistan inga länkar:</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=\"nc\">AuditEntryAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    list_display <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    list_display_links <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\">ModelAdmin.</span><span class=\"sig-name descname\">list_editable</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>Ange <code class=\"docutils literal notranslate\">list_editable</code> till en lista med fältnamn i modellen som kan redigeras på sidan med ändringslistan. Det innebär att fält som listas i <code class=\"docutils literal notranslate\">list_editable</code> kommer att visas som formulärwidgets på sidan med ändringslistan, så att användarna kan redigera och spara flera rader samtidigt.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p><code class=\"docutils literal notranslate\">list_editable</code> samverkar med ett par andra alternativ på särskilda sätt; du bör notera följande regler:</p>\n<ul class=\"simple\">\n<li><p>Alla fält i <code class=\"docutils literal notranslate\">list_editable</code> måste också finnas i <code class=\"docutils literal notranslate\">list_display</code>. Du kan inte redigera ett fält som inte visas!</p></li>\n<li><p>Samma fält kan inte listas i både <code class=\"docutils literal notranslate\">list_editable</code> och <code class=\"docutils literal notranslate\">list_display_links</code> - ett fält kan inte vara både ett formulär och en länk.</p></li>\n</ul>\n<p>Du får ett valideringsfel om någon av dessa regler inte följs.</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\">ModelAdmin.</span><span class=\"sig-name descname\">list_filter</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>Ställ in <code class=\"docutils literal notranslate\">list_filter</code> för att aktivera filter i höger sidofält på sidan med ändringslistan i admin.</p>\n<p>I sin enklaste form tar <code class=\"docutils literal notranslate\">list_filter</code> en lista eller tupel av fältnamn för att aktivera filtrering på, men flera mer avancerade alternativ finns tillgängliga. Se <a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/admin/filters/#modeladmin-list-filters\"><span class=\"std std-ref\">ModelAdmin Lista Filter</span></a> för mer information.</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\">ModelAdmin.</span><span class=\"sig-name descname\">list_max_show_all</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>Ställ in <code class=\"docutils literal notranslate\">list_max_show_all</code> för att styra hur många objekt som kan visas på en ”Visa alla”-sida för adminändringslistan. Administratören kommer att visa en ”Visa alla”-länk på ändringslistan endast om det totala antalet resultat är mindre än eller lika med denna inställning. Som standard är detta inställt på <code class=\"docutils literal notranslate\">200</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\">ModelAdmin.</span><span class=\"sig-name descname\">list_per_page</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>Ställ in <code class=\"docutils literal notranslate\">list_per_page</code> för att styra hur många objekt som visas på varje paginerad sida i listan över adminändringar. Som standard är detta inställt på <code class=\"docutils literal notranslate\">100</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\">ModelAdmin.</span><span class=\"sig-name descname\">list_select_related</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>Ställ in <code class=\"docutils literal notranslate\">list_select_related</code> för att tala om för Django att använda <a class=\"reference internal\" href=\"/sv/6.1/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\">select_related()</code></a> vid hämtning av listan över objekt på sidan med adminändringslistan. Detta kan spara dig en massa databasfrågor.</p>\n<p>Värdet ska vara antingen en boolean, en lista eller en tupel. Standardvärdet är <code class=\"docutils literal notranslate\">False</code>.</p>\n<p>När värdet är <code class=\"docutils literal notranslate\">True</code>, kommer <code class=\"docutils literal notranslate\">select_related()</code> alltid att anropas. När värdet är satt till <code class=\"docutils literal notranslate\">False</code>, kommer Django att titta på <code class=\"docutils literal notranslate\">list_display</code> och anropa <code class=\"docutils literal notranslate\">select_related()</code> om någon <code class=\"docutils literal notranslate\">ForeignKey</code> finns.</p>\n<p>Om du behöver mer finkornig kontroll kan du använda en tupel (eller lista) som värde för <code class=\"docutils literal notranslate\">list_select_related</code>. Tom tuple kommer att förhindra Django från att anropa <code class=\"docutils literal notranslate\">select_related</code> överhuvudtaget. Alla andra tupler kommer att skickas direkt till <code class=\"docutils literal notranslate\">select_related</code> som parametrar. Till exempel:</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=\"nc\">ArticleAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    list_select_related <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>kommer att anropa <code class=\"docutils literal notranslate\">select_related('author', 'category')</code>.</p>\n<p>Om du behöver ange ett dynamiskt värde baserat på begäran kan du implementera en <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\">get_list_select_related()</code></a>-metod.</p>\n<aside class=\"version-note version-deprecated\" data-version=\"6.1\" role=\"note\">\n<p class=\"version-note-title\">Deprecated since Django 6.1</p><p><span class=\"versionmodified deprecated\">Ersatt sedan version 6.1: </span>Att använda <code class=\"docutils literal notranslate\">True</code> för <code class=\"docutils literal notranslate\">list_select_related</code> är föråldrat. Använd i stället en lista eller tupel med fältnamn.</p>\n</aside>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p><code class=\"docutils literal notranslate\">ModelAdmin</code> ignorerar detta attribut när <code class=\"xref py py-meth docutils literal notranslate\">select_related`()</code> redan anropats på changelistans <code class=\"docutils literal notranslate\">QuerySet</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\">ModelAdmin.</span><span class=\"sig-name descname\">ordering</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>Ange <code class=\"docutils literal notranslate\">ordering</code> för att specificera hur listor med objekt ska ordnas i Django admin-vyerna. Detta bör vara en lista eller tupel i samma format som en modells <a class=\"reference internal\" href=\"/sv/6.1/ref/models/options/#django.db.models.Options.ordering\" title=\"django.db.models.Options.ordering\"><code class=\"xref py py-attr docutils literal notranslate\">ordering</code></a> parameter.</p>\n<p>Om detta inte anges kommer Django-administratören att använda modellens standardbeställning.</p>\n<p>Om du behöver ange en dynamisk ordning (t.ex. beroende på användare eller språk) kan du implementera en <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\">get_ordering()</code></a>-metod.</p>\n<aside class=\"admonition-performance-considerations-with-ordering-and-sorting admonition\" role=\"note\">\n<p class=\"admonition-title\">Prestandaöverväganden vid beställning och sortering</p>\n<p>För att säkerställa en deterministisk ordning av resultaten lägger ändringslistan till <code class=\"docutils literal notranslate\">pk</code> till ordningen om den inte kan hitta en enda eller unik uppsättning fält som ger total ordning.</p>\n<p>Om standardordningen till exempel är efter ett icke-unikt fält <code class=\"docutils literal notranslate\">name</code>, sorteras ändringslistan efter <code class=\"docutils literal notranslate\">name</code> och <code class=\"docutils literal notranslate\">pk</code>. Detta kan fungera dåligt om du har många rader och inte har ett index på <code class=\"docutils literal notranslate\">name</code> och <code class=\"docutils literal notranslate\">pk</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\">ModelAdmin.</span><span class=\"sig-name descname\">paginator</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>Den paginatorklass som ska användas för paginering. Som standard används <a class=\"reference internal\" href=\"/sv/6.1/ref/paginator/#django.core.paginator.Paginator\" title=\"django.core.paginator.Paginator\"><code class=\"xref py py-class docutils literal notranslate\">django.core.paginator.Paginator</code></a>. Om den anpassade paginatorklassen inte har samma konstruktörsgränssnitt som <a class=\"reference internal\" href=\"/sv/6.1/ref/paginator/#django.core.paginator.Paginator\" title=\"django.core.paginator.Paginator\"><code class=\"xref py py-class docutils literal notranslate\">django.core.paginator.Paginator</code></a>, måste du också tillhandahålla en implementering för <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\">ModelAdmin.get_paginator()</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\">ModelAdmin.</span><span class=\"sig-name descname\">prepopulated_fields</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>Ange <code class=\"docutils literal notranslate\">prepopulated_fields</code> till en ordbok som mappar fältnamn till de fält som den ska förinställa från:</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=\"nc\">ArticleAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    prepopulated_fields <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>När den är inställd kommer de angivna fälten att använda lite JavaScript för att fyllas i från de tilldelade fälten. Den huvudsakliga användningen av denna funktion är att automatiskt generera värdet för ”SlugField”-fälten från ett eller flera andra fält. Det genererade värdet skapas genom att sammanfoga värdena i källfälten och sedan omvandla resultatet till en giltig slug (t.ex. genom att ersätta mellanslag med bindestreck och ASCII-bokstäver med gemener).</p>\n<p>Förfyllda fält ändras inte av JavaScript efter att ett värde har sparats. Det är vanligtvis inte önskvärt att sluggar ändras (vilket skulle leda till att ett objekts URL ändras om sluggen används i det).</p>\n<p><code class=\"docutils literal notranslate\">prepopulated_fields</code> accepterar inte fälten <code class=\"docutils literal notranslate\">DateTimeField</code>, <code class=\"docutils literal notranslate\">ForeignKey</code>, <code class=\"docutils literal notranslate\">OneToOneField</code> och <code class=\"docutils literal notranslate\">ManyToManyField</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\">ModelAdmin.</span><span class=\"sig-name descname\">preserve_filters</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>Som standard bevaras tillämpade filter i listvyn efter att ett objekt har skapats, redigerats eller tagits bort. Du kan rensa bort filter genom att ställa in detta attribut på <code class=\"docutils literal notranslate\">False</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\">ModelAdmin.</span><span class=\"sig-name descname\">show_facets</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>Styr om antalet facetter ska visas för filter i adminändringslistan. Standardvärde är <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\">ShowFacets.ALLOW</code></a>.</p>\n<p>När de visas uppdateras antalet facetter i linje med de filter som används för tillfället.</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\">class</span> </em><span class=\"sig-name descname\">ShowFacets</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>En lista över tillåtna värden för <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\">ModelAdmin.show_facets</code></a>.</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\">ALWAYS</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>Visa alltid att fasetten räknas.</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\">ALLOW</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>Visa facettantal när parametern <code class=\"docutils literal notranslate\">_facets</code> för frågesträng anges.</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\">NEVER</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>Visa aldrig antalet fasetter.</p>\n</dd></dl>\n\n</dd></dl>\n\n<p>Ställ in <code class=\"docutils literal notranslate\">show_facets</code> till önskat värde för <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\">ShowFacets</code></a>. Om du t.ex. alltid vill visa antalet facetter utan att behöva ange frågeparametern:</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n\n\n<span class=\"k\">class</span> <span class=\"nc\">MyModelAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n    <span class=\"c1\"># Have facets always shown for this model admin.</span>\n    show_facets <span class=\"o\">=</span> admin<span class=\"o\">.</span>ShowFacets<span class=\"o\">.</span>ALWAYS\n</code></pre></div>\n<aside class=\"admonition-performance-considerations-with-facets admonition\" role=\"note\">\n<p class=\"admonition-title\">Prestandaöverväganden med fasetter</p>\n<p>Om du aktiverar facettfilter kommer antalet frågor på sidan med adminändringslistan att öka i takt med antalet filter. Dessa förfrågningar kan orsaka prestandaproblem, särskilt för stora datamängder. I dessa fall kan det vara lämpligt att ställa in <code class=\"docutils literal notranslate\">show_facets</code> till <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\">ShowFacets.NEVER</code></a> för att helt inaktivera facettering.</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\">ModelAdmin.</span><span class=\"sig-name descname\">radio_fields</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>Som standard använder Djangos admin ett select-box-gränssnitt (&lt;select&gt;) för fält som är <code class=\"docutils literal notranslate\">ForeignKey</code> eller har <code class=\"docutils literal notranslate\">choices</code> inställt. Om ett fält finns i <code class=\"docutils literal notranslate\">radio_fields</code> kommer Django att använda ett radioknappsgränssnitt istället. Förutsatt att <code class=\"docutils literal notranslate\">group</code> är en <code class=\"docutils literal notranslate\">ForeignKey</code> på <code class=\"docutils literal notranslate\">Person</code> modellen:</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=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    radio_fields <span class=\"o\">=</span> <span class=\"p\">{</span><span class=\"s2\">&quot;group&quot;</span><span class=\"p\">:</span> admin<span class=\"o\">.</span>VERTICAL<span class=\"p\">}</span>\n</code></pre></div>\n<p>Du kan välja att använda <code class=\"docutils literal notranslate\">HORIZONTAL</code> eller <code class=\"docutils literal notranslate\">VERTICAL</code> från modulen <code class=\"docutils literal notranslate\">django.contrib.admin</code>.</p>\n<p>Inkludera inte ett fält i <code class=\"docutils literal notranslate\">radio_fields</code> om det inte är en <code class=\"docutils literal notranslate\">ForeignKey</code> eller har <code class=\"docutils literal notranslate\">choices</code> inställt.</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\">ModelAdmin.</span><span class=\"sig-name descname\">autocomplete_fields</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\">autocomplete_fields</code> är en lista över <code class=\"docutils literal notranslate\">ForeignKey</code> och/eller <code class=\"docutils literal notranslate\">ManyToManyField</code> fält som du vill ändra till <a class=\"reference external\" href=\"https://select2.org/\">Select2</a> autokompletteringsinmatningar.</p>\n<p>Som standard använder administratören ett select-box-gränssnitt (<code class=\"docutils literal notranslate\">&lt;select&gt;</code>) för dessa fält. Ibland vill du inte ta på dig omkostnader för att välja alla relaterade instanser som ska visas i rullgardinsmenyn.</p>\n<p>Select2-inmatningen liknar standardinmatningen men har en sökfunktion som laddar alternativen asynkront. Detta är snabbare och mer användarvänligt om den relaterade modellen har många instanser.</p>\n<p>Du måste definiera <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\">search_fields</code></a> på det relaterade objektets <code class=\"docutils literal notranslate\">ModelAdmin</code> eftersom autokompletteringssökningen använder den.</p>\n<p>För att undvika obehörigt utlämnande av data måste användare ha behörigheten <code class=\"docutils literal notranslate\">view</code> eller <code class=\"docutils literal notranslate\">change</code> till det relaterade objektet för att kunna använda autokomplettering.</p>\n<p>Ordning och paginering av resultaten styrs av den relaterade <code class=\"docutils literal notranslate\">ModelAdmin</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\">get_ordering()</code></a> och <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\">get_paginator()</code></a> metoderna.</p>\n<p>I följande exempel har <code class=\"docutils literal notranslate\">ChoiceAdmin</code> ett fält för autokomplettering av <code class=\"docutils literal notranslate\">ForeignKey</code> till <code class=\"docutils literal notranslate\">Question</code>. Resultaten filtreras efter fältet <code class=\"docutils literal notranslate\">question_text</code> och sorteras efter fältet <code class=\"docutils literal notranslate\">date_created</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=\"nc\">QuestionAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    ordering <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;date_created&quot;</span><span class=\"p\">]</span>\n    search_fields <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=\"nc\">ChoiceAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    autocomplete_fields <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\" role=\"note\">\n<p class=\"admonition-title\">Prestandaöverväganden för stora datamängder</p>\n<p>Beställning med <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\">ModelAdmin.ordering</code></a> kan orsaka prestandaproblem eftersom sortering på en stor frågeuppsättning blir långsam.</p>\n<p>Om dina sökfält innehåller fält som inte indexeras av databasen kan du också få dålig prestanda i extremt stora tabeller.</p>\n<p>I dessa fall är det en bra idé att skriva en egen <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\">ModelAdmin.get_search_results()</code></a>-implementering med hjälp av en indexerad fulltextsökning.</p>\n<p>Du kanske också vill ändra <code class=\"docutils literal notranslate\">Paginator</code> på mycket stora tabeller eftersom standardpaginatorn alltid utför en <code class=\"docutils literal notranslate\">count()</code>-fråga. Du kan t.ex. åsidosätta standardimplementeringen av egenskapen <code class=\"docutils literal notranslate\">Paginator.count</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\">ModelAdmin.</span><span class=\"sig-name descname\">raw_id_fields</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>Som standard använder Djangos admin ett gränssnitt med en valbox (&lt;select&gt;) för fält som är <code class=\"docutils literal notranslate\">ForeignKey</code>. Ibland vill du inte ta på dig omkostnaderna för att behöva välja alla relaterade instanser som ska visas i rullgardinsmenyn.</p>\n<p><code class=\"docutils literal notranslate\">raw_id_fields</code> är en lista över fält som du vill ändra till en <code class=\"docutils literal notranslate\">Input</code> widget för antingen en <code class=\"docutils literal notranslate\">ForeignKey</code> eller <code class=\"docutils literal notranslate\">ManyToManyField</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=\"nc\">ArticleAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    raw_id_fields <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>Widgeten <code class=\"docutils literal notranslate\">Input</code> för <code class=\"docutils literal notranslate\">raw_id_fields</code> ska innehålla en primärnyckel om fältet är <code class=\"docutils literal notranslate\">ForeignKey</code>, eller en kommaseparerad lista med värden om fältet är <code class=\"docutils literal notranslate\">ManyToManyField</code>. Widgeten <code class=\"docutils literal notranslate\">raw_id_fields</code> visar en knapp med förstoringsglas bredvid fältet som låter användare söka efter och välja ett värde:</p>\n<img alt=\"/sv/6.1/_images/raw_id_fields.png\" src=\"/sv/6.1/_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\">ModelAdmin.</span><span class=\"sig-name descname\">readonly_fields</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>Som standard visar administratören alla fält som redigerbara. Alla fält i detta alternativ (som bör vara en <code class=\"docutils literal notranslate\">list</code> eller <code class=\"docutils literal notranslate\">tuple</code>) kommer att visa sina data som de är och inte redigerbara; de är också uteslutna från <a class=\"reference internal\" href=\"/sv/6.1/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\">ModelForm</code></a> som används för att skapa och redigera. Observera att när du anger <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\">ModelAdmin.fields</code></a> eller <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\">ModelAdmin.fieldsets</code></a> måste de skrivskyddade fälten vara närvarande för att visas (annars ignoreras de).</p>\n<p>Om <code class=\"docutils literal notranslate\">readonly_fields</code> används utan att definiera explicit ordning genom <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\">ModelAdmin.fields</code></a> eller <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\">ModelAdmin.fieldsets</code></a> kommer de att läggas till sist efter alla redigerbara fält.</p>\n<p>Ett skrivskyddat fält kan inte bara visa data från en modells fält, det kan också visa utdata från en modells metod eller en metod i själva klassen <code class=\"docutils literal notranslate\">ModelAdmin</code>. Detta är mycket likt det sätt som <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\">ModelAdmin.list_display</code></a> fungerar på. Detta ger ett sätt att använda admin-gränssnittet för att ge feedback om statusen för de objekt som redigeras, till exempel:</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n<span class=\"kn\">from</span> <span class=\"nn\">django.utils.html</span> <span class=\"kn\">import</span> format_html_join\n<span class=\"kn\">from</span> <span class=\"nn\">django.utils.safestring</span> <span class=\"kn\">import</span> mark_safe\n\n\n<span class=\"k\">class</span> <span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    readonly_fields <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>display<span class=\"p\">(</span>description<span class=\"o\">=</span><span class=\"s2\">&quot;Address&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">def</span> <span class=\"nf\">address_report</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> instance<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> format_html_join<span class=\"p\">(</span>\n            mark_safe<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>line<span class=\"p\">,)</span> <span class=\"k\">for</span> line <span class=\"ow\">in</span> instance<span class=\"o\">.</span>get_full_address<span class=\"p\">()),</span>\n        <span class=\"p\">)</span> <span class=\"ow\">or</span> mark_safe<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\">ModelAdmin.</span><span class=\"sig-name descname\">save_as</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>Ställ in <code class=\"docutils literal notranslate\">save_as</code> för att aktivera en ”spara som ny”-funktion på adminändringsformulär.</p>\n<p>Normalt har objekt tre sparalternativ: ”Spara”, ”Spara och fortsätt redigera” och ”Spara och lägg till en annan”. Om <code class=\"docutils literal notranslate\">save_as</code> är <code class=\"docutils literal notranslate\">True</code> kommer ”Save and add another” att ersättas av en ”Save as new”-knapp som skapar ett nytt objekt (med ett nytt ID) i stället för att uppdatera det befintliga objektet.</p>\n<p>Som standard är <code class=\"docutils literal notranslate\">save_as</code> inställd på <code class=\"docutils literal notranslate\">False</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\">ModelAdmin.</span><span class=\"sig-name descname\">save_as_continue</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>När <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\">save_as=True</code></a> är standardomdirigeringen efter att det nya objektet har sparats till ändringsvyn för det objektet. Om du anger <code class=\"docutils literal notranslate\">save_as_continue=False</code> kommer omdirigeringen att ske till vyn för ändringslistan.</p>\n<p>Som standard är <code class=\"docutils literal notranslate\">save_as_continue</code> inställd på <code class=\"docutils literal notranslate\">True</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\">ModelAdmin.</span><span class=\"sig-name descname\">save_on_top</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>Ställ in <code class=\"docutils literal notranslate\">save_on_top</code> för att lägga till sparaknappar överst i dina ändringsformulär för administratörer.</p>\n<p>Normalt visas sparaknapparna bara längst ned i formulären. Om du anger <code class=\"docutils literal notranslate\">save_on_top</code> kommer knapparna att visas både överst och nederst.</p>\n<p>Som standard är <code class=\"docutils literal notranslate\">save_on_top</code> inställd på <code class=\"docutils literal notranslate\">False</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\">ModelAdmin.</span><span class=\"sig-name descname\">search_fields</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>Ställ in <code class=\"docutils literal notranslate\">search_fields</code> för att aktivera en sökruta på sidan för adminändringslistan. Detta bör ställas in på en lista med fältnamn som kommer att sökas när någon skickar in en sökfråga i den textrutan.</p>\n<p>Dessa fält är vanligen textfält som <code class=\"docutils literal notranslate\">CharField</code> eller <code class=\"docutils literal notranslate\">TextField</code>, men även icke-textfält som <code class=\"docutils literal notranslate\">IntegerField</code> kan sökas. Genom att lägga till ett uttryckligt uppslag, såsom <code class=\"docutils literal notranslate\">age__exact</code>, kan sökningen använda uppslaget direkt i stället för att omvandla värdet till text. Du kan också utföra ett relaterat uppslag på ett <code class=\"docutils literal notranslate\">ForeignKey</code> eller <code class=\"docutils literal notranslate\">ManyToManyField</code> med uppslags-API:ets ”follow”-notation:</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>search_fields <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>Om du t.ex. har ett blogginlägg med en författare skulle följande definition göra det möjligt att söka efter blogginlägg med hjälp av författarens e-postadress:</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>search_fields <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>När någon söker i admins sökruta delar Django upp sökfrågan i söktermer och returnerar alla objekt som innehåller var och en av dem i minst ett av <code class=\"docutils literal notranslate\">search_fields</code>. Som standard används uppslaget <a class=\"reference internal\" href=\"/sv/6.1/ref/models/querysets/#std-fieldlookup-icontains\"><code class=\"xref std std-lookup docutils literal notranslate\">icontains</code></a> för textfält. För icke-textfält med ett uttryckligt uppslag (t.ex. <code class=\"docutils literal notranslate\">age__exact</code>) används det angivna uppslaget, och söktermer som är ogiltiga för den fälttypen hoppas över.</p>\n<p>Om <code class=\"docutils literal notranslate\">search_fields</code> till exempel är satt till <code class=\"docutils literal notranslate\">['first_name', 'last_name', 'age__exact']</code> och en användare söker efter <code class=\"docutils literal notranslate\">john 25</code>, gör Django motsvarigheten till följande SQL-<code class=\"docutils literal notranslate\">WHERE</code>-sats:</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=\"p\">(</span>first_name <span class=\"k\">ILIKE</span> <span class=\"s1\">&#39;%john%&#39;</span> <span class=\"k\">OR</span> last_name <span class=\"k\">ILIKE</span> <span class=\"s1\">&#39;%john%&#39;</span><span class=\"p\">)</span>\n<span class=\"k\">AND</span> <span class=\"p\">(</span>first_name <span class=\"k\">ILIKE</span> <span class=\"s1\">&#39;%25%&#39;</span> <span class=\"k\">OR</span> last_name <span class=\"k\">ILIKE</span> <span class=\"s1\">&#39;%25%&#39;</span> <span class=\"k\">OR</span> age <span class=\"o\">=</span> <span class=\"mi\">25</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Observera att <code class=\"docutils literal notranslate\">john</code> inte söks efter i <code class=\"docutils literal notranslate\">age</code> eftersom det inte är ett giltigt heltal, medan <code class=\"docutils literal notranslate\">25</code> söks efter i alla tre fält.</p>\n<p>Sökfrågan kan innehålla citerade fraser med mellanslag. Till exempel:, om en användare söker efter <code class=\"docutils literal notranslate\">&quot;john winston&quot;</code> eller <code class=\"docutils literal notranslate\">'john winston'</code>, kommer Django att göra motsvarande denna SQL <code class=\"docutils literal notranslate\">WHERE</code> klausul:</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=\"p\">(</span>first_name <span class=\"k\">ILIKE</span> <span class=\"s1\">&#39;%john winston%&#39;</span> <span class=\"k\">OR</span> last_name <span class=\"k\">ILIKE</span> <span class=\"s1\">&#39;%john winston%&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Om du inte vill använda <code class=\"docutils literal notranslate\">icontains</code> som uppslagsord kan du använda vilket uppslagsord som helst genom att lägga till det i fältet. Du kan till exempel använda <a class=\"reference internal\" href=\"/sv/6.1/ref/models/querysets/#std-fieldlookup-exact\"><code class=\"xref std std-lookup docutils literal notranslate\">exact</code></a> genom att ställa in <code class=\"docutils literal notranslate\">search_fields</code> till <code class=\"docutils literal notranslate\">['first_name__exact']</code>.</p>\n<p>Vissa (äldre) genvägar för att ange en fältuppslagning finns också tillgängliga. Du kan prefixa ett fält i <code class=\"docutils literal notranslate\">search_fields</code> med följande tecken och det motsvarar att lägga till <code class=\"docutils literal notranslate\">__&lt;lookup&gt;</code> till fältet:</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>Prefix</p></th>\n<th class=\"head\"><p>Uppslag</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=\"/sv/6.1/ref/models/querysets/#std-fieldlookup-istartswith\"><code class=\"xref std std-lookup docutils literal notranslate\">istartswith</code></a></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p>=</p></td>\n<td><p><a class=\"reference internal\" href=\"/sv/6.1/ref/models/querysets/#std-fieldlookup-iexact\"><code class=\"xref std std-lookup docutils literal notranslate\">iexact</code></a></p></td>\n</tr>\n<tr class=\"row-even\"><td><p>&#64;</p></td>\n<td><p><a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/postgres/search/#std-fieldlookup-search\"><code class=\"xref std std-lookup docutils literal notranslate\">search</code></a></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p>Inget</p></td>\n<td><p><code class=\"xref std std-lookup docutils literal notranslate\">ikoner</code></p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>Om du behöver anpassa sökningen kan du använda <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\">ModelAdmin.get_search_results()</code></a> för att tillhandahålla ytterligare eller alternativt sökbeteende.</p>\n<aside class=\"version-note version-changed\" data-version=\"6.1\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 6.1</p><p>I tidigare versioner hoppades inte söktermer över om de var ogiltiga för en given fälttyp.</p>\n</aside>\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\">ModelAdmin.</span><span class=\"sig-name descname\">search_help_text</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>Ange <code class=\"docutils literal notranslate\">search_help_text</code> för att ange en beskrivande text för sökrutan som kommer att visas under den.</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\">ModelAdmin.</span><span class=\"sig-name descname\">show_full_result_count</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>Ställ in <code class=\"docutils literal notranslate\">show_full_result_count</code> för att styra om hela antalet objekt ska visas på en filtrerad adminsida (t.ex. <code class=\"docutils literal notranslate\">99 resultat (103 totalt)</code>). Om detta alternativ är inställt på <code class=\"docutils literal notranslate\">False</code> visas istället en text som <code class=\"docutils literal notranslate\">99 resultat (Visa alla)</code>.</p>\n<p>Standardvärdet <code class=\"docutils literal notranslate\">show_full_result_count=True</code> genererar en fråga för att utföra en fullständig räkning av tabellen, vilket kan vara dyrt om tabellen innehåller ett stort antal rader.</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\">ModelAdmin.</span><span class=\"sig-name descname\">sortable_by</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>Som standard tillåter sidan med ändringslistan sortering efter alla modellfält (och anropsbara som använder argumentet <code class=\"docutils literal notranslate\">ordering</code> till dekoratorn <a class=\"reference internal\" href=\"#django.contrib.admin.display\" title=\"django.contrib.admin.display\"><code class=\"xref py py-func docutils literal notranslate\">display()</code></a> eller har attributet <code class=\"docutils literal notranslate\">admin_order_field</code>) som anges i <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\">list_display</code></a>.</p>\n<p>Om du vill inaktivera sortering för vissa kolumner anger du <code class=\"docutils literal notranslate\">ortable_by</code> till en samling (t.ex. <code class=\"docutils literal notranslate\">list</code>, <code class=\"docutils literal notranslate\">tuple</code> eller <code class=\"docutils literal notranslate\">set</code>) av den delmängd av <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\">list_display</code></a> som du vill ska vara sorterbar. En tom samling inaktiverar sortering för alla kolumner.</p>\n<p>Om du behöver ange den här listan dynamiskt, implementera en <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\">get_sortable_by()</code></a>-metod istället.</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\">ModelAdmin.</span><span class=\"sig-name descname\">view_on_site</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>Ställ in <code class=\"docutils literal notranslate\">view_on_site</code> för att styra om länken ”View on site” ska visas eller inte. Den här länken ska leda dig till en URL där du kan visa det sparade objektet.</p>\n<p>Detta värde kan vara antingen en boolesk flagga eller en callable. Om <code class=\"docutils literal notranslate\">True</code> (standard) kommer objektets <a class=\"reference internal\" href=\"/sv/6.1/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\">get_absolute_url()</code></a>-metod att användas för att generera webbadressen.</p>\n<p>Om din modell har en <a class=\"reference internal\" href=\"/sv/6.1/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\">get_absolute_url()</code></a>-metod men du inte vill att knappen ”Visa på webbplatsen” ska visas, behöver du bara ställa in <code class=\"docutils literal notranslate\">view_on_site</code> till <code class=\"docutils literal notranslate\">False</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n\n\n<span class=\"k\">class</span> <span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    view_on_site <span class=\"o\">=</span> <span class=\"kc\">False</span>\n</code></pre></div>\n<p>Om det är en callable accepterar den modellinstansen som en parameter. Till exempel:</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n<span class=\"kn\">from</span> <span class=\"nn\">django.urls</span> <span class=\"kn\">import</span> reverse\n\n\n<span class=\"k\">class</span> <span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"nf\">view_on_site</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> obj<span class=\"p\">):</span>\n        url <span class=\"o\">=</span> reverse<span class=\"p\">(</span><span class=\"s2\">&quot;person-detail&quot;</span><span class=\"p\">,</span> kwargs<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;slug&quot;</span><span class=\"p\">:</span> obj<span class=\"o\">.</span>slug<span class=\"p\">})</span>\n        <span class=\"k\">return</span> <span class=\"s2\">&quot;https://example.com&quot;</span> <span class=\"o\">+</span> url\n</code></pre></div>\n</dd></dl>\n\n<section id=\"custom-template-options\">\n<h4>Anpassade mallalternativ<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>Avsnittet <a class=\"reference internal\" href=\"#admin-overriding-templates\"><span class=\"std std-ref\">Åsidosätta adminmallar</span></a> beskriver hur du åsidosätter eller utökar standardadminmallarna. Använd följande alternativ för att åsidosätta standardmallarna som används av vyerna i <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\">ModelAdmin</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\">ModelAdmin.</span><span class=\"sig-name descname\">add_form_template</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>Sökväg till en anpassad mall som används av <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\">add_view()</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\">ModelAdmin.</span><span class=\"sig-name descname\">change_form_template</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>Sökväg till en anpassad mall som används av <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\">change_view()</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\">ModelAdmin.</span><span class=\"sig-name descname\">change_list_template</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>Sökväg till en anpassad mall som används av <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\">changelist_view()</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\">ModelAdmin.</span><span class=\"sig-name descname\">delete_confirmation_template</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>Sökväg till en anpassad mall som används av <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\">delete_view()</code></a> för att visa en bekräftelsesida när ett eller flera objekt tas bort.</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\">ModelAdmin.</span><span class=\"sig-name descname\">delete_selected_confirmation_template</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>Sökväg till en anpassad mall som används av åtgärdsmetoden <code class=\"docutils literal notranslate\">delete_selected</code> för att visa en bekräftelsesida när ett eller flera objekt tas bort. Se <a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/admin/actions/\"><span class=\"doc\">dokumentation om åtgärder</span></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_max_display\">\n<span class=\"sig-prename descclassname\">ModelAdmin.</span><span class=\"sig-name descname\">delete_confirmation_max_display</span><a class=\"heading-anchor\" href=\"#django.contrib.admin.ModelAdmin.delete_confirmation_max_display\"><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.1\" role=\"note\">\n<p class=\"version-note-title\">New in Django 6.1</p></aside>\n<p>Sätt <code class=\"docutils literal notranslate\">delete_confirmation_max_display</code> för att styra hur många objekt som visas på sidorna för borttagningsbekräftelse innan återstoden trunkeras med en ellips.</p>\n<p>Gränsen gäller det totala antalet visade objekt i hela relationshierarkin. Detta är endast en visningsinställning och påverkar inte det totala antalet objekt som hämtas från databasen.</p>\n<p>Detta gäller <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\">delete_view()</code></a> och åtgärden <code class=\"docutils literal notranslate\">delete_selected</code> om det anges för <code class=\"docutils literal notranslate\">ModelAdmin</code>, samt valideringsmeddelanden för skyddad borttagning om det anges för <code class=\"docutils literal notranslate\">InlineModelAdmin</code>. Standardvärdet är <code class=\"docutils literal notranslate\">None</code> (ingen trunkering).</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\">ModelAdmin.</span><span class=\"sig-name descname\">object_history_template</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>Sökväg till en anpassad mall som används av <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\">history_view()</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\">ModelAdmin.</span><span class=\"sig-name descname\">popup_response_template</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>Sökväg till en anpassad mall som används av <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\">response_add()</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\">response_change()</code></a> och <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\">response_delete()</code></a>.</p>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"modeladmin-methods\">\n<span id=\"model-admin-methods\"></span><h3>metoder för <code class=\"docutils literal notranslate\">ModelAdmin</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\">Varning</p>\n<p>När du åsidosätter <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\">ModelAdmin.save_model()</code></a> och <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\">ModelAdmin.delete_model()</code></a> måste din kod spara/radera objektet. De är inte avsedda för vetoändamål, utan ger dig möjlighet att utföra extra operationer.</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\">ModelAdmin.</span><span class=\"sig-name descname\">save_model</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj</em>, <em class=\"sig-param\">form</em>, <em class=\"sig-param\">change</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>Metoden <code class=\"docutils literal notranslate\">save_model</code> får <code class=\"docutils literal notranslate\">HttpRequest</code>, en modellinstans, en <code class=\"docutils literal notranslate\">ModelForm</code>-instans och ett booleanskt värde baserat på om den lägger till eller ändrar objektet. Genom att åsidosätta denna metod kan man göra för- eller eftersparande operationer. Anropa <code class=\"docutils literal notranslate\">super().save_model()</code> för att spara objektet med <a class=\"reference internal\" href=\"/sv/6.1/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">Model.save()</code></a>.</p>\n<p>Till exempel: för att koppla <code class=\"docutils literal notranslate\">request.user</code> till objektet innan det sparas:</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n\n\n<span class=\"k\">class</span> <span class=\"nc\">ArticleAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"nf\">save_model</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> request<span class=\"p\">,</span> obj<span class=\"p\">,</span> form<span class=\"p\">,</span> change<span class=\"p\">):</span>\n        obj<span class=\"o\">.</span>user <span class=\"o\">=</span> request<span class=\"o\">.</span>user\n        <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span>save_model<span class=\"p\">(</span>request<span class=\"p\">,</span> obj<span class=\"p\">,</span> form<span class=\"p\">,</span> change<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\">ModelAdmin.</span><span class=\"sig-name descname\">delete_model</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj</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>Metoden <code class=\"docutils literal notranslate\">delete_model</code> får <code class=\"docutils literal notranslate\">HttpRequest</code> och en modellinstans. Genom att åsidosätta denna metod kan du göra åtgärder före eller efter borttagning. Anropa <code class=\"docutils literal notranslate\">super().delete_model()</code> för att radera objektet med <a class=\"reference internal\" href=\"/sv/6.1/ref/models/instances/#django.db.models.Model.delete\" title=\"django.db.models.Model.delete\"><code class=\"xref py py-meth docutils literal notranslate\">Model.delete()</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\">ModelAdmin.</span><span class=\"sig-name descname\">delete_queryset</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">queryset</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>Metoden <code class=\"docutils literal notranslate\">delete_queryset()</code> får <code class=\"docutils literal notranslate\">HttpRequest</code> och en <code class=\"docutils literal notranslate\">QuerySet</code> med objekt som ska tas bort. Åsidosätt metoden för att anpassa borttagningsprocessen för <a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/admin/actions/\"><span class=\"doc\">åtgärden</span></a> ”ta bort markerade objekt”.</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\">ModelAdmin.</span><span class=\"sig-name descname\">save_formset</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">form</em>, <em class=\"sig-param\">formset</em>, <em class=\"sig-param\">change</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>Metoden <code class=\"docutils literal notranslate\">save_formset</code> får <code class=\"docutils literal notranslate\">HttpRequest</code>, den överordnade <code class=\"docutils literal notranslate\">ModelForm</code>-instansen och ett boolean-värde baserat på om den lägger till eller ändrar det överordnade objektet.</p>\n<p>Till exempel:, för att koppla <code class=\"docutils literal notranslate\">request.user</code> till varje ändrad formulärmodellinstans:</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=\"nc\">ArticleAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"nf\">save_formset</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> request<span class=\"p\">,</span> form<span class=\"p\">,</span> formset<span class=\"p\">,</span> change<span class=\"p\">):</span>\n        instances <span class=\"o\">=</span> formset<span class=\"o\">.</span>save<span class=\"p\">(</span>commit<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n        <span class=\"k\">for</span> obj <span class=\"ow\">in</span> formset<span class=\"o\">.</span>deleted_objects<span class=\"p\">:</span>\n            obj<span class=\"o\">.</span>delete<span class=\"p\">()</span>\n        <span class=\"k\">for</span> instance <span class=\"ow\">in</span> instances<span class=\"p\">:</span>\n            instance<span class=\"o\">.</span>user <span class=\"o\">=</span> request<span class=\"o\">.</span>user\n            instance<span class=\"o\">.</span>save<span class=\"p\">()</span>\n        formset<span class=\"o\">.</span>save_m2m<span class=\"p\">()</span>\n</code></pre></div>\n<p>Se även <a class=\"reference internal\" href=\"/sv/6.1/topics/forms/modelforms/#saving-objects-in-the-formset\"><span class=\"std std-ref\">Spara objekt i formuläret</span></a>.</p>\n</dd></dl>\n\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>Alla hooks som returnerar en <code class=\"docutils literal notranslate\">ModelAdmin</code>-egenskap returnerar själva egenskapen snarare än en kopia av dess värde. Dynamisk modifiering av värdet kan leda till överraskande resultat.</p>\n<p>Låt oss ta <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\">ModelAdmin.get_readonly_fields()</code></a> som ett exempel:</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=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    readonly_fields <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=\"nf\">get_readonly_fields</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> request<span class=\"p\">,</span> obj<span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">):</span>\n        readonly <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span>get_readonly_fields<span class=\"p\">(</span>request<span class=\"p\">,</span> obj<span class=\"p\">)</span>\n        <span class=\"k\">if</span> <span class=\"ow\">not</span> request<span class=\"o\">.</span>user<span class=\"o\">.</span>is_superuser<span class=\"p\">:</span>\n            readonly<span class=\"o\">.</span>append<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> readonly\n</code></pre></div>\n<p>Detta resulterar i att <code class=\"docutils literal notranslate\">readonly_fields</code> blir <code class=\"docutils literal notranslate\">[&quot;name&quot;, &quot;age&quot;, &quot;age&quot;, ...]</code>, även för en superanvändare, eftersom <code class=\"docutils literal notranslate\">&quot;age&quot;</code> läggs till varje gång en icke-superanvändare besöker sidan.</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\">ModelAdmin.</span><span class=\"sig-name descname\">get_ordering</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</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>Metoden <code class=\"docutils literal notranslate\">get_ordering</code> tar en <code class=\"docutils literal notranslate\">request</code> som parameter och förväntas returnera en <code class=\"docutils literal notranslate\">list</code> eller <code class=\"docutils literal notranslate\">tuple</code> för ordning på liknande sätt som attributet <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\">ordering</code></a>. Till exempel:</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=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"nf\">get_ordering</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> request<span class=\"p\">):</span>\n        <span class=\"k\">if</span> request<span class=\"o\">.</span>user<span class=\"o\">.</span>is_superuser<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\">ModelAdmin.</span><span class=\"sig-name descname\">get_search_results</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">queryset</em>, <em class=\"sig-param\">search_term</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>Metoden <code class=\"docutils literal notranslate\">get_search_results</code> ändrar listan över objekt som visas till de som matchar den angivna söktermen. Den accepterar begäran, en queryset som tillämpar de aktuella filtren och den sökterm som användaren angett. Den returnerar en tupel som innehåller en queryset som modifierats för att genomföra sökningen och en boolean som anger om resultaten kan innehålla dubbletter.</p>\n<p>Standardimplementeringen söker i de fält som anges i <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\">ModelAdmin.search_fields</code></a>.</p>\n<p>Denna metod kan åsidosättas med din egen anpassade sökmetod. Du kanske t.ex. vill söka efter ett heltalsfält eller använda ett externt verktyg som <a class=\"reference external\" href=\"https://solr.apache.org\">Solr</a> eller <a class=\"reference external\" href=\"https://haystacksearch.org\">Haystack</a>. Du måste fastställa om de ändringar i queryset som genomförs av din sökmetod kan leda till dubbletter i resultaten och returnera <code class=\"docutils literal notranslate\">True</code> i det andra elementet i returvärdet.</p>\n<p>Om du t.ex. vill söka efter <code class=\"docutils literal notranslate\">namn</code> och <code class=\"docutils literal notranslate\">ålder</code> kan du använda:</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=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    list_display <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    search_fields <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=\"nf\">get_search_results</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> request<span class=\"p\">,</span> queryset<span class=\"p\">,</span> search_term<span class=\"p\">):</span>\n        queryset<span class=\"p\">,</span> may_have_duplicates <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span>get_search_results<span class=\"p\">(</span>\n            request<span class=\"p\">,</span>\n            queryset<span class=\"p\">,</span>\n            search_term<span class=\"p\">,</span>\n        <span class=\"p\">)</span>\n        <span class=\"k\">try</span><span class=\"p\">:</span>\n            search_term_as_int <span class=\"o\">=</span> <span class=\"nb\">int</span><span class=\"p\">(</span>search_term<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            queryset <span class=\"o\">|=</span> <span class=\"bp\">self</span><span class=\"o\">.</span>model<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>age<span class=\"o\">=</span>search_term_as_int<span class=\"p\">)</span>\n        <span class=\"k\">return</span> queryset<span class=\"p\">,</span> may_have_duplicates\n</code></pre></div>\n<p>Denna implementering är effektivare än <code class=\"docutils literal notranslate\">search_fields = ('name', '= age')</code> vilket resulterar i en strängjämförelse för det numeriska fältet, till exempel `` … ELLER UPPER (”polls_choice”.”votes”::text) = UPPER (’4’)`` på PostgreSQL.</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\">ModelAdmin.</span><span class=\"sig-name descname\">save_related</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">form</em>, <em class=\"sig-param\">formsets</em>, <em class=\"sig-param\">change</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>Metoden <code class=\"docutils literal notranslate\">save_related</code> får <code class=\"docutils literal notranslate\">HttpRequest</code>, den överordnade <code class=\"docutils literal notranslate\">ModelForm</code>-instansen, listan över inline-formulär och ett boolean-värde som baseras på om den överordnade instansen läggs till eller ändras. Här kan du göra alla för- eller eftersparingsåtgärder för objekt som är relaterade till föräldern. Observera att det överordnade objektet och dess formulär redan har sparats vid denna tidpunkt.</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\">ModelAdmin.</span><span class=\"sig-name descname\">get_autocomplete_fields</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</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>Metoden <code class=\"docutils literal notranslate\">get_autocomplete_fields()</code> får <code class=\"docutils literal notranslate\">HttpRequest</code> och förväntas returnera en <code class=\"docutils literal notranslate\">list</code> eller <code class=\"docutils literal notranslate\">tuple</code> med fältnamn som kommer att visas med en widget för autokomplettering enligt beskrivningen ovan i avsnittet <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\">ModelAdmin.autocomplete_fields</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_readonly_fields\">\n<span class=\"sig-prename descclassname\">ModelAdmin.</span><span class=\"sig-name descname\">get_readonly_fields</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</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>Metoden <code class=\"docutils literal notranslate\">get_readonly_fields</code> får <code class=\"docutils literal notranslate\">HttpRequest</code> och <code class=\"docutils literal notranslate\">obj</code> som redigeras (eller <code class=\"docutils literal notranslate\">None</code> i ett add-formulär) och förväntas returnera en <code class=\"docutils literal notranslate\">list</code> eller <code class=\"docutils literal notranslate\">tuple</code> med fältnamn som ska visas som skrivskyddade, enligt beskrivningen ovan i avsnittet <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\">ModelAdmin.readonly_fields</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_prepopulated_fields\">\n<span class=\"sig-prename descclassname\">ModelAdmin.</span><span class=\"sig-name descname\">get_prepopulated_fields</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</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>Metoden <code class=\"docutils literal notranslate\">get_prepopulated_fields</code> får <code class=\"docutils literal notranslate\">HttpRequest</code> och <code class=\"docutils literal notranslate\">obj</code> som redigeras (eller <code class=\"docutils literal notranslate\">None</code> i ett add-formulär) och förväntas returnera en <code class=\"docutils literal notranslate\">dictionary</code>, enligt beskrivningen ovan i avsnittet <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\">ModelAdmin.prepopulated_fields</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_display\">\n<span class=\"sig-prename descclassname\">ModelAdmin.</span><span class=\"sig-name descname\">get_list_display</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</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>Metoden <code class=\"docutils literal notranslate\">get_list_display</code> ges <code class=\"docutils literal notranslate\">HttpRequest</code> och förväntas returnera en <code class=\"docutils literal notranslate\">lista</code> eller <code class=\"docutils literal notranslate\">tupel</code> med fältnamn som kommer att visas i vyn med ändringslistan enligt beskrivningen ovan i avsnittet <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\">ModelAdmin.list_display</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_display_links\">\n<span class=\"sig-prename descclassname\">ModelAdmin.</span><span class=\"sig-name descname\">get_list_display_links</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">list_display</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>Metoden <code class=\"docutils literal notranslate\">get_list_display_links</code> får <code class=\"docutils literal notranslate\">HttpRequest</code> och den <code class=\"docutils literal notranslate\">list</code> eller <code class=\"docutils literal notranslate\">tuple</code> som returneras av <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\">ModelAdmin.get_list_display()</code></a>. Den förväntas returnera antingen <code class=\"docutils literal notranslate\">None</code> eller en <code class=\"docutils literal notranslate\">list</code> eller <code class=\"docutils literal notranslate\">tuple</code> med fältnamn på changelistan som kommer att länkas till ändringsvyn, enligt beskrivningen i avsnittet <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\">ModelAdmin.list_display_links</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_exclude\">\n<span class=\"sig-prename descclassname\">ModelAdmin.</span><span class=\"sig-name descname\">get_exclude</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</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>Metoden <code class=\"docutils literal notranslate\">get_exclude</code> får <code class=\"docutils literal notranslate\">HttpRequest</code> och <code class=\"docutils literal notranslate\">obj</code> som redigeras (eller <code class=\"docutils literal notranslate\">None</code> i ett add-formulär) och förväntas returnera en lista med fält, enligt beskrivningen i <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\">ModelAdmin.exclude</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\">ModelAdmin.</span><span class=\"sig-name descname\">get_fields</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</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>Metoden <code class=\"docutils literal notranslate\">get_fields</code> får <code class=\"docutils literal notranslate\">HttpRequest</code> och <code class=\"docutils literal notranslate\">obj</code> som redigeras (eller <code class=\"docutils literal notranslate\">None</code> i ett add-formulär) och förväntas returnera en lista med fält, enligt beskrivningen ovan i avsnittet <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\">ModelAdmin.fields</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\">ModelAdmin.</span><span class=\"sig-name descname\">get_fieldsets</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</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>Metoden <code class=\"docutils literal notranslate\">get_fieldsets</code> får <code class=\"docutils literal notranslate\">HttpRequest</code> och <code class=\"docutils literal notranslate\">obj</code> som redigeras (eller <code class=\"docutils literal notranslate\">None</code> på ett add-formulär) och förväntas returnera en lista med 2-tupler, där varje 2-tupel representerar en <code class=\"docutils literal notranslate\">&lt;fieldset&gt;</code> på admin-formulärsidan, enligt beskrivningen ovan i avsnittet <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\">ModelAdmin.fieldsets</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_filter\">\n<span class=\"sig-prename descclassname\">ModelAdmin.</span><span class=\"sig-name descname\">get_list_filter</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</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>Metoden <code class=\"docutils literal notranslate\">get_list_filter</code> ges <code class=\"docutils literal notranslate\">HttpRequest</code> och förväntas returnera samma typ av sekvenstyp som för attributet <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\">list_filter</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\">ModelAdmin.</span><span class=\"sig-name descname\">get_list_select_related</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</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>Metoden <code class=\"docutils literal notranslate\">get_list_select_related</code> ges till <code class=\"docutils literal notranslate\">HttpRequest</code> och bör returnera en boolean eller lista som <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\">ModelAdmin.list_select_related</code></a> gör.</p>\n<aside class=\"version-note version-deprecated\" data-version=\"6.1\" role=\"note\">\n<p class=\"version-note-title\">Deprecated since Django 6.1</p><p><span class=\"versionmodified deprecated\">Ersatt sedan version 6.1: </span>Att returnera <code class=\"docutils literal notranslate\">True</code> är föråldrat. Returnera i stället en lista eller tupel med fältnamn.</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_search_fields\">\n<span class=\"sig-prename descclassname\">ModelAdmin.</span><span class=\"sig-name descname\">get_search_fields</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</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>Metoden <code class=\"docutils literal notranslate\">get_search_fields</code> ges <code class=\"docutils literal notranslate\">HttpRequest</code> och förväntas returnera samma typ av sekvenstyp som för attributet <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\">search_fields</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\">ModelAdmin.</span><span class=\"sig-name descname\">get_sortable_by</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</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>Metoden <code class=\"docutils literal notranslate\">get_sortable_by()</code> skickas till <code class=\"docutils literal notranslate\">HttpRequest</code> och förväntas returnera en samling (t.ex. <code class=\"docutils literal notranslate\">list</code>, <code class=\"docutils literal notranslate\">tuple</code> eller <code class=\"docutils literal notranslate\">set</code>) av fältnamn som kommer att kunna sorteras på sidan med ändringslistan.</p>\n<p>Dess standardimplementering returnerar <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\">sortable_by</code></a> om den är inställd, annars hänvisar den till <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\">get_list_display()</code></a>.</p>\n<p>Till exempel: för att förhindra att en eller flera kolumner är sorterbara:</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=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"nf\">get_sortable_by</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> request<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>get_list_display<span class=\"p\">(</span>request<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\">ModelAdmin.</span><span class=\"sig-name descname\">get_inline_instances</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</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>Metoden <code class=\"docutils literal notranslate\">get_inline_instances</code> får <code class=\"docutils literal notranslate\">HttpRequest</code> och <code class=\"docutils literal notranslate\">obj</code> som redigeras (eller <code class=\"docutils literal notranslate\">None</code> i ett add-formulär) och förväntas returnera en <code class=\"docutils literal notranslate\">list</code> eller <code class=\"docutils literal notranslate\">tuple</code> av <a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin\" title=\"django.contrib.admin.InlineModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\">InlineModelAdmin</code></a>-objekt, enligt beskrivningen nedan i avsnittet <a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin\" title=\"django.contrib.admin.InlineModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\">InlineModelAdmin</code></a>. Följande skulle till exempel returnera inlines utan standardfiltrering baserat på behörigheter för att lägga till, ändra, ta bort och visa:</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=\"nc\">MyModelAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    inlines <span class=\"o\">=</span> <span class=\"p\">[</span>MyInline<span class=\"p\">]</span>\n\n    <span class=\"k\">def</span> <span class=\"nf\">get_inline_instances</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> request<span class=\"p\">,</span> obj<span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"p\">[</span>inline<span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span>model<span class=\"p\">,</span> <span class=\"bp\">self</span><span class=\"o\">.</span>admin_site<span class=\"p\">)</span> <span class=\"k\">for</span> inline <span class=\"ow\">in</span> <span class=\"bp\">self</span><span class=\"o\">.</span>inlines<span class=\"p\">]</span>\n</code></pre></div>\n<p>Om du åsidosätter den här metoden måste du se till att de returnerade inlines är instanser av de klasser som definieras i <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\">inlines</code></a>, annars kan du få ett ”Bad Request”-fel när du lägger till relaterade objekt.</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\">ModelAdmin.</span><span class=\"sig-name descname\">get_inlines</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj</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>Metoden <code class=\"docutils literal notranslate\">get_inlines</code> får <code class=\"docutils literal notranslate\">HttpRequest</code> och <code class=\"docutils literal notranslate\">obj</code> som redigeras (eller <code class=\"docutils literal notranslate\">None</code> i ett add-formulär) och förväntas returnera en iterabel med inlines. Du kan åsidosätta den här metoden för att dynamiskt lägga till inlines baserat på begäran eller modellinstansen istället för att ange dem i <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\">ModelAdmin.inlines</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\">ModelAdmin.</span><span class=\"sig-name descname\">get_urls</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>Metoden <code class=\"docutils literal notranslate\">get_urls</code> för en <code class=\"docutils literal notranslate\">ModelAdmin</code> returnerar de URL:er som ska användas för den ModelAdmin på samma sätt som en URLconf. Du kan därför utöka dem enligt dokumentationen i <a class=\"reference internal\" href=\"/sv/6.1/topics/http/urls/\"><span class=\"doc\">URL-distributör</span></a>, med omslutningen <code class=\"docutils literal notranslate\">AdminSite.admin_view()</code> kring dina vyer:</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n<span class=\"kn\">from</span> <span class=\"nn\">django.template.response</span> <span class=\"kn\">import</span> TemplateResponse\n<span class=\"kn\">from</span> <span class=\"nn\">django.urls</span> <span class=\"kn\">import</span> path\n\n\n<span class=\"k\">class</span> <span class=\"nc\">MyModelAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"nf\">get_urls</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        urls <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span>get_urls<span class=\"p\">()</span>\n        my_urls <span class=\"o\">=</span> <span class=\"p\">[</span>path<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>admin_site<span class=\"o\">.</span>admin_view<span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span>my_view<span class=\"p\">))]</span>\n        <span class=\"k\">return</span> my_urls <span class=\"o\">+</span> urls\n\n    <span class=\"k\">def</span> <span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> request<span class=\"p\">):</span>\n        <span class=\"c1\"># ...</span>\n        context <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>admin_site<span class=\"o\">.</span>each_context<span class=\"p\">(</span>request<span class=\"p\">),</span>\n            <span class=\"c1\"># Anything else you want in the context...</span>\n            key<span class=\"o\">=</span>value<span class=\"p\">,</span>\n        <span class=\"p\">)</span>\n        <span class=\"k\">return</span> TemplateResponse<span class=\"p\">(</span>request<span class=\"p\">,</span> <span class=\"s2\">&quot;sometemplate.html&quot;</span><span class=\"p\">,</span> context<span class=\"p\">)</span>\n</code></pre></div>\n<p>Om du vill använda adminlayouten, förläng från <code class=\"docutils literal notranslate\">admin/base_site.html</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/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\">Observera</p>\n<p>Lägg märke till hur funktionen <code class=\"docutils literal notranslate\">self.my_view</code> är inkapslad i <code class=\"docutils literal notranslate\">self.admin_site.admin_view</code>. Detta är viktigt, eftersom det säkerställer två saker:</p>\n<ol class=\"arabic simple\">\n<li><p>Behörighetskontroller körs för att säkerställa att endast aktiva personalanvändare kan komma åt vyn.</p></li>\n<li><p>Dekoratorn <a class=\"reference internal\" href=\"/sv/6.1/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\">django.views.decorators.cache.never_cache()</code></a> används för att förhindra cachelagring, vilket säkerställer att den returnerade informationen är uppdaterad.</p></li>\n</ol>\n</aside>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Observera att de anpassade mönstren inkluderas <em>före</em> de vanliga admin-URL:erna: admin-URL-mönstren är mycket tillåtande och matchar nästan vad som helst, så du vill vanligtvis lägga till dina anpassade URL:er före de inbyggda.</p>\n<p>I det här exemplet kommer <code class=\"docutils literal notranslate\">my_view</code> att nås via <code class=\"docutils literal notranslate\">/admin/myapp/mymodel/my_view/</code> (förutsatt att administratörens webbadresser finns i <code class=\"docutils literal notranslate\">/admin/</code>)</p>\n</aside>\n<p>Om sidan kan cachas, men du ändå vill att behörighetskontrollen ska utföras, kan du skicka ett <code class=\"docutils literal notranslate\">cacheable=True</code>-argument till <code class=\"docutils literal notranslate\">AdminSite.admin_view()</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>path<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>admin_site<span class=\"o\">.</span>admin_view<span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span>my_view<span class=\"p\">,</span> cacheable<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>vyerna <code class=\"docutils literal notranslate\">ModelAdmin</code> har attributen <code class=\"docutils literal notranslate\">model_admin</code>. Andra <code class=\"docutils literal notranslate\">AdminSite</code>-vyer har <code class=\"docutils literal notranslate\">admin_site</code>-attribut.</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\">ModelAdmin.</span><span class=\"sig-name descname\">get_form</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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>Returnerar en <a class=\"reference internal\" href=\"/sv/6.1/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\">ModelForm</code></a>-klass för användning i admin-vyerna för tillägg och ändring, se <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\">add_view()</code></a> och <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\">change_view()</code></a>.</p>\n<p>Basimplementeringen använder <a class=\"reference internal\" href=\"/sv/6.1/ref/forms/models/#django.forms.models.modelform_factory\" title=\"django.forms.models.modelform_factory\"><code class=\"xref py py-func docutils literal notranslate\">modelform_factory()</code></a> för att underklassa <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\">form</code></a>, modifierad av attribut som <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\">fields</code></a> och <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\">exclude</code></a>. Så om du till exempel vill erbjuda ytterligare fält till superanvändare kan du byta ut ett annat basformulär så här:</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=\"nc\">MyModelAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"nf\">get_form</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> request<span class=\"p\">,</span> obj<span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n        <span class=\"k\">if</span> request<span class=\"o\">.</span>user<span class=\"o\">.</span>is_superuser<span class=\"p\">:</span>\n            kwargs<span class=\"p\">[</span><span class=\"s2\">&quot;form&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> MySuperuserForm\n        <span class=\"k\">return</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span>get_form<span class=\"p\">(</span>request<span class=\"p\">,</span> obj<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">)</span>\n</code></pre></div>\n<p>Du kan också returnera en anpassad <a class=\"reference internal\" href=\"/sv/6.1/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\">ModelForm</code></a>-klass direkt.</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\">ModelAdmin.</span><span class=\"sig-name descname\">get_formsets_with_inlines</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</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>Ger (<code class=\"docutils literal notranslate\">FormSet</code>, <a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin\" title=\"django.contrib.admin.InlineModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\">InlineModelAdmin</code></a>) par för användning i admin-vyer för tillägg och ändring.</p>\n<p>Om du t.ex. vill visa en viss inline endast i ändringsvyn kan du åsidosätta <code class=\"docutils literal notranslate\">get_formsets_with_inlines</code> på följande sätt:</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=\"nc\">MyModelAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    inlines <span class=\"o\">=</span> <span class=\"p\">[</span>MyInline<span class=\"p\">,</span> SomeOtherInline<span class=\"p\">]</span>\n\n    <span class=\"k\">def</span> <span class=\"nf\">get_formsets_with_inlines</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> request<span class=\"p\">,</span> obj<span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">):</span>\n        <span class=\"k\">for</span> inline <span class=\"ow\">in</span> <span class=\"bp\">self</span><span class=\"o\">.</span>get_inline_instances<span class=\"p\">(</span>request<span class=\"p\">,</span> obj<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>inline<span class=\"p\">,</span> MyInline<span class=\"p\">)</span> <span class=\"ow\">or</span> obj <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> inline<span class=\"o\">.</span>get_formset<span class=\"p\">(</span>request<span class=\"p\">,</span> obj<span class=\"p\">),</span> inline\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\">ModelAdmin.</span><span class=\"sig-name descname\">formfield_for_foreignkey</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">db_field</em>, <em class=\"sig-param\">request</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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>Med metoden <code class=\"docutils literal notranslate\">formfield_for_foreignkey</code> på en <code class=\"docutils literal notranslate\">ModelAdmin</code> kan du åsidosätta standardformfältet för ett främmande nyckelfält. Till exempel:, för att returnera en delmängd av objekt för detta främmande nyckelfält baserat på användaren:</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=\"nc\">MyModelAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"nf\">formfield_for_foreignkey</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> db_field<span class=\"p\">,</span> request<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n        <span class=\"k\">if</span> db_field<span class=\"o\">.</span>name <span class=\"o\">==</span> <span class=\"s2\">&quot;car&quot;</span><span class=\"p\">:</span>\n            kwargs<span class=\"p\">[</span><span class=\"s2\">&quot;queryset&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> Car<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>owner<span class=\"o\">=</span>request<span class=\"o\">.</span>user<span class=\"p\">)</span>\n        <span class=\"k\">return</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span>formfield_for_foreignkey<span class=\"p\">(</span>db_field<span class=\"p\">,</span> request<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">)</span>\n</code></pre></div>\n<p>Detta använder <code class=\"docutils literal notranslate\">HttpRequest</code>-instansen för att filtrera främmande nyckelfältet <code class=\"docutils literal notranslate\">Car</code> för att endast visa de bilar som ägs av <code class=\"docutils literal notranslate\">User</code>-instansen.</p>\n<p>För mer komplexa filter kan du använda metoden <code class=\"docutils literal notranslate\">ModelForm.__init__()</code> för att filtrera baserat på en <code class=\"docutils literal notranslate\">instans</code> av din modell (se <a class=\"reference internal\" href=\"/sv/6.1/ref/forms/fields/#fields-which-handle-relationships\"><span class=\"std std-ref\">Fält som hanterar relationer</span></a>). Till exempel:</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=\"nc\">CountryAdminForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>ModelForm<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span>args<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<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>args<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">)</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span>fields<span class=\"p\">[</span><span class=\"s2\">&quot;capital&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>queryset <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span>instance<span class=\"o\">.</span>cities<span class=\"o\">.</span>all<span class=\"p\">()</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">CountryAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    form <span class=\"o\">=</span> CountryAdminForm\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\">ModelAdmin.</span><span class=\"sig-name descname\">formfield_for_manytomany</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">db_field</em>, <em class=\"sig-param\">request</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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>I likhet med metoden <code class=\"docutils literal notranslate\">formfield_for_foreignkey</code> kan metoden <code class=\"docutils literal notranslate\">formfield_for_manytomany</code> åsidosättas för att ändra standardformulärsfältet för ett många till många-fält. Om t.ex. en ägare kan äga flera bilar och bilar kan tillhöra flera ägare - en många till många-relation - kan du filtrera främmande nyckelfältet <code class=\"docutils literal notranslate\">Car</code> så att det bara visar de bilar som ägs av <code class=\"docutils literal notranslate\">User</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=\"nc\">MyModelAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"nf\">formfield_for_manytomany</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> db_field<span class=\"p\">,</span> request<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n        <span class=\"k\">if</span> db_field<span class=\"o\">.</span>name <span class=\"o\">==</span> <span class=\"s2\">&quot;cars&quot;</span><span class=\"p\">:</span>\n            kwargs<span class=\"p\">[</span><span class=\"s2\">&quot;queryset&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> Car<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>owner<span class=\"o\">=</span>request<span class=\"o\">.</span>user<span class=\"p\">)</span>\n        <span class=\"k\">return</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span>formfield_for_manytomany<span class=\"p\">(</span>db_field<span class=\"p\">,</span> request<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<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\">ModelAdmin.</span><span class=\"sig-name descname\">formfield_for_choice_field</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">db_field</em>, <em class=\"sig-param\">request</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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>Precis som metoderna <code class=\"docutils literal notranslate\">formfield_for_foreignkey</code> och <code class=\"docutils literal notranslate\">formfield_for_manytomany</code> kan metoden <code class=\"docutils literal notranslate\">formfield_for_choice_field</code> åsidosättas för att ändra standardformulärsfältet för ett fält som har deklarerade val. Om t.ex. de val som är tillgängliga för en superanvändare ska vara annorlunda än de som är tillgängliga för den vanliga personalen, kan du göra på följande sätt:</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=\"nc\">MyModelAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"nf\">formfield_for_choice_field</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> db_field<span class=\"p\">,</span> request<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n        <span class=\"k\">if</span> db_field<span class=\"o\">.</span>name <span class=\"o\">==</span> <span class=\"s2\">&quot;status&quot;</span><span class=\"p\">:</span>\n            kwargs<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> request<span class=\"o\">.</span>user<span class=\"o\">.</span>is_superuser<span class=\"p\">:</span>\n                kwargs<span class=\"p\">[</span><span class=\"s2\">&quot;choices&quot;</span><span class=\"p\">]</span><span class=\"o\">.</span>append<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>formfield_for_choice_field<span class=\"p\">(</span>db_field<span class=\"p\">,</span> request<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"admonition-choices-limitations admonition\" role=\"note\">\n<p class=\"admonition-title\"><code class=\"docutils literal notranslate\">val</code> begränsningar</p>\n<p>Alla <code class=\"docutils literal notranslate\">choices</code>-attribut som anges på formulärfältet begränsas endast till formulärfältet. Om motsvarande fält i modellen har val inställda, måste de val som tillhandahålls i formuläret vara en giltig delmängd av dessa val, annars kommer formuläret att misslyckas med en <a class=\"reference internal\" href=\"/sv/6.1/ref/exceptions/#django.core.exceptions.ValidationError\" title=\"django.core.exceptions.ValidationError\"><code class=\"xref py py-exc docutils literal notranslate\">ValidationError</code></a> när modellen själv valideras innan den sparas.</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\">ModelAdmin.</span><span class=\"sig-name descname\">get_changelist</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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>Returnerar klassen <code class=\"docutils literal notranslate\">Changelist</code> som ska användas för listning. Som standard används <code class=\"docutils literal notranslate\">django.contrib.admin.views.main.ChangeList</code>. Genom att ärva denna klass kan du ändra beteendet för listningen.</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\">ModelAdmin.</span><span class=\"sig-name descname\">get_changelist_form</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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>Returnerar en <a class=\"reference internal\" href=\"/sv/6.1/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\">ModelForm</code></a>-klass för användning i <code class=\"docutils literal notranslate\">Formset</code> på changelist-sidan. För att använda ett anpassat formulär, till exempel:</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=\"nn\">django</span> <span class=\"kn\">import</span> forms\n\n\n<span class=\"k\">class</span> <span class=\"nc\">MyForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>ModelForm<span class=\"p\">):</span>\n    <span class=\"k\">pass</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">MyModelAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"nf\">get_changelist_form</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> request<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n        <span class=\"k\">return</span> MyForm\n</code></pre></div>\n<aside class=\"admonition-omit-the-meta-model-attribute admonition\" role=\"note\">\n<p class=\"admonition-title\">Utelämna attributet <code class=\"docutils literal notranslate\">Meta.model</code></p>\n<p>Om du definierar attributet <code class=\"docutils literal notranslate\">Meta.model</code> på en <a class=\"reference internal\" href=\"/sv/6.1/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\">ModelForm</code></a>, måste du också definiera attributet <code class=\"docutils literal notranslate\">Meta.fields</code> (eller attributet <code class=\"docutils literal notranslate\">Meta.exclude</code>). Men <code class=\"docutils literal notranslate\">ModelAdmin</code> ignorerar detta värde och åsidosätter det med attributet <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\">ModelAdmin.list_editable</code></a>. Den enklaste lösningen är att utelämna attributet <code class=\"docutils literal notranslate\">Meta.model</code>, eftersom <code class=\"docutils literal notranslate\">ModelAdmin</code> kommer att tillhandahålla den korrekta modellen att använda.</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\">ModelAdmin.</span><span class=\"sig-name descname\">get_changelist_formset</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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>Returnerar en <a class=\"reference internal\" href=\"/sv/6.1/topics/forms/modelforms/#model-formsets\"><span class=\"std std-ref\">ModelFormSet</span></a>-klass för användning på sidan med ändringslistan om <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\">list_editable</code></a> används. Om du vill använda en anpassad formuläruppsättning, till exempel:</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=\"nn\">django.forms</span> <span class=\"kn\">import</span> BaseModelFormSet\n\n\n<span class=\"k\">class</span> <span class=\"nc\">MyAdminFormSet</span><span class=\"p\">(</span>BaseModelFormSet<span class=\"p\">):</span>\n    <span class=\"k\">pass</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">MyModelAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"nf\">get_changelist_formset</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> request<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n        kwargs<span class=\"p\">[</span><span class=\"s2\">&quot;formset&quot;</span><span class=\"p\">]</span> <span class=\"o\">=</span> MyAdminFormSet\n        <span class=\"k\">return</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span>get_changelist_formset<span class=\"p\">(</span>request<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<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\">ModelAdmin.</span><span class=\"sig-name descname\">lookup_allowed</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">lookup</em>, <em class=\"sig-param\">value</em>, <em class=\"sig-param\">request</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>Objekten på sidan med ändringslistan kan filtreras med hjälp av uppslagningar från URL:ens frågesträng. Det är så här <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\">list_filter</code></a> fungerar, till exempel. Uppslagningarna liknar det som används i <a class=\"reference internal\" href=\"/sv/6.1/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\">QuerySet.filter()</code></a> (t.ex. <code class=\"docutils literal notranslate\">user__email=user&#64;example.com</code>). Eftersom sökningarna i frågesträngen kan manipuleras av användaren måste de rensas för att förhindra obehörig exponering av data.</p>\n<p>Metoden <code class=\"docutils literal notranslate\">lookup_allowed()</code> får en sökväg från frågesträngen (t.ex. <code class=\"docutils literal notranslate\">'user__email'</code>), motsvarande värde (t.ex. <code class=\"docutils literal notranslate\">'user&#64;example.com'</code>) och begäran, och returnerar en boolean som anger om filtrering av changelistans <code class=\"docutils literal notranslate\">QuerySet</code> med parametrarna är tillåten. Om <code class=\"docutils literal notranslate\">lookup_allowed()</code> returnerar <code class=\"docutils literal notranslate\">False</code>, aktiveras <code class=\"docutils literal notranslate\">DisallowedModelAdminLookup</code> (underklass till <a class=\"reference internal\" href=\"/sv/6.1/ref/exceptions/#django.core.exceptions.SuspiciousOperation\" title=\"django.core.exceptions.SuspiciousOperation\"><code class=\"xref py py-exc docutils literal notranslate\">SuspiciousOperation</code></a>).</p>\n<p>Som standard tillåter <code class=\"docutils literal notranslate\">lookup_allowed()</code> åtkomst till en modells lokala fält, fältsökvägar som används i <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\">list_filter</code></a> (men inte sökvägar från <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\">get_list_filter()</code></a>) och uppslagningar som krävs för att <a class=\"reference internal\" href=\"/sv/6.1/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\">limit_choices_to</code></a> ska fungera korrekt i <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\">raw_id_fields</code></a>.</p>\n<p>Åsidosätt denna metod för att anpassa de tillåtna uppslagningarna för din <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\">ModelAdmin</code></a>-underklass.</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\">ModelAdmin.</span><span class=\"sig-name descname\">has_view_permission</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</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>Ska returnera <code class=\"docutils literal notranslate\">True</code> om användaren har behörighet att komma åt ändrings- eller historikvyn för <code class=\"docutils literal notranslate\">obj</code>, annars <code class=\"docutils literal notranslate\">False</code>. Om obj är <code class=\"docutils literal notranslate\">None</code> ska <code class=\"docutils literal notranslate\">True</code> eller <code class=\"docutils literal notranslate\">False</code> returneras för att ange om visning av objekt av den här typen är tillåten generellt (t.ex. tolkas <code class=\"docutils literal notranslate\">False</code> som att den aktuella användaren inte har behörighet att visa något objekt av den här typen).</p>\n<p>Standardimplementeringen returnerar <code class=\"docutils literal notranslate\">True</code> om användaren har antingen behörigheten ”change” eller ”view”.</p>\n<aside class=\"admonition-object-level-view-permissions-aren-t-visibility-filters admonition\" role=\"note\">\n<p class=\"admonition-title\">Visningsbehörigheter på objektnivå är inte synlighetsfilter</p>\n<p>Visningsbehörigheter på objektnivå hindrar inte att information om ett objekt visas någon annanstans i administrationen, exempelvis i ändringslistan, val för relaterade fält, resultat från automatisk komplettering och senaste åtgärder. Anpassa frågeuppsättningarna som används av relevanta vyer och formulärfält för att begränsa informationen.</p>\n</aside>\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\">ModelAdmin.</span><span class=\"sig-name descname\">has_add_permission</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</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>Ska returnera <code class=\"docutils literal notranslate\">True</code> om det är tillåtet att lägga till ett objekt, annars <code class=\"docutils literal notranslate\">False</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\">ModelAdmin.</span><span class=\"sig-name descname\">has_change_permission</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</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>Bör returnera <code class=\"docutils literal notranslate\">True</code> om det är tillåtet att redigera <code class=\"docutils literal notranslate\">obj</code>, annars <code class=\"docutils literal notranslate\">False</code>. Om <code class=\"docutils literal notranslate\">obj</code> är <code class=\"docutils literal notranslate\">None</code>, bör returnera <code class=\"docutils literal notranslate\">True</code> eller <code class=\"docutils literal notranslate\">False</code> för att ange om redigering av objekt av denna typ är tillåten i allmänhet (t.ex. kommer <code class=\"docutils literal notranslate\">False</code> att tolkas som att den aktuella användaren inte får redigera något objekt av denna typ).</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\">ModelAdmin.</span><span class=\"sig-name descname\">has_delete_permission</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</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>Bör returnera <code class=\"docutils literal notranslate\">True</code> om det är tillåtet att radera <code class=\"docutils literal notranslate\">obj</code>, annars <code class=\"docutils literal notranslate\">False</code>. Om <code class=\"docutils literal notranslate\">obj</code> är <code class=\"docutils literal notranslate\">None</code>, bör returnera <code class=\"docutils literal notranslate\">True</code> eller <code class=\"docutils literal notranslate\">False</code> för att ange om det är tillåtet att radera objekt av denna typ i allmänhet (t.ex. kommer <code class=\"docutils literal notranslate\">False</code> att tolkas som att den aktuella användaren inte får radera något objekt av denna typ).</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\">ModelAdmin.</span><span class=\"sig-name descname\">has_module_permission</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</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>Bör returnera <code class=\"docutils literal notranslate\">True</code> om det är tillåtet att visa modulen på adminindexsidan och komma åt modulens indexsida, annars <code class=\"docutils literal notranslate\">False</code>. Använder <a class=\"reference internal\" href=\"/sv/6.1/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\">User.has_module_perms()</code></a> som standard. Att åsidosätta det begränsar inte åtkomsten till vyn, lägg till, ändra eller ta bort vyer, <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\">has_view_permission()</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\">has_add_permission()</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\">has_change_permission()</code></a> och <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\">has_delete_permission()</code></a> bör användas för det.</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\">ModelAdmin.</span><span class=\"sig-name descname\">get_queryset</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</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>Metoden <code class=\"docutils literal notranslate\">get_queryset</code> på en <code class=\"docutils literal notranslate\">ModelAdmin</code> returnerar en <a class=\"reference internal\" href=\"/sv/6.1/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> av alla modellinstanser som kan redigeras av administratörswebbplatsen. Ett användningsfall för att åsidosätta den här metoden är att visa objekt som ägs av den inloggade användaren:</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=\"nc\">MyModelAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"nf\">get_queryset</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> request<span class=\"p\">):</span>\n        qs <span class=\"o\">=</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span>get_queryset<span class=\"p\">(</span>request<span class=\"p\">)</span>\n        <span class=\"k\">if</span> request<span class=\"o\">.</span>user<span class=\"o\">.</span>is_superuser<span class=\"p\">:</span>\n            <span class=\"k\">return</span> qs\n        <span class=\"k\">return</span> qs<span class=\"o\">.</span>filter<span class=\"p\">(</span>author<span class=\"o\">=</span>request<span class=\"o\">.</span>user<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\">ModelAdmin.</span><span class=\"sig-name descname\">message_user</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">message</em>, <em class=\"sig-param\">level<span class=\"o\">=</span><span class=\"default_value\">messages.INFO</span></em>, <em class=\"sig-param\">extra_tags<span class=\"o\">=</span><span class=\"default_value\">''</span></em>, <em class=\"sig-param\">fail_silently<span class=\"o\">=</span><span class=\"default_value\">False</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>Skickar ett meddelande till användaren med backenden <a class=\"reference internal\" href=\"/sv/6.1/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\">django.contrib.messages</code></a>. Se <a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/admin/actions/#custom-admin-action\"><span class=\"std std-ref\">exemplet med anpassad ModelAdmin</span></a>.</p>\n<p>Med nyckelordsargument kan du ändra meddelandenivån, lägga till extra CSS-taggar eller misslyckas tyst om ramverket <code class=\"docutils literal notranslate\">contrib.messages</code> inte är installerat. Dessa nyckelordsargument matchar dem för <a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/messages/#django.contrib.messages.add_message\" title=\"django.contrib.messages.add_message\"><code class=\"xref py py-func docutils literal notranslate\">django.contrib.messages.add_message()</code></a>, se den funktionens dokumentation för mer information. En skillnad är att nivån kan skickas som en strängetikett utöver heltal/konstant.</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\">ModelAdmin.</span><span class=\"sig-name descname\">get_paginator</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">queryset</em>, <em class=\"sig-param\">per_page</em>, <em class=\"sig-param\">orphans<span class=\"o\">=</span><span class=\"default_value\">0</span></em>, <em class=\"sig-param\">allow_empty_first_page<span class=\"o\">=</span><span class=\"default_value\">True</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>Returnerar en instans av den paginator som ska användas för den här vyn. Som standard instansieras en instans av <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\">paginator</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\">ModelAdmin.</span><span class=\"sig-name descname\">response_add</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj</em>, <em class=\"sig-param\">post_url_continue<span class=\"o\">=</span><span class=\"default_value\">None</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>Bestämmer <a class=\"reference internal\" href=\"/sv/6.1/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> för <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\">add_view()</code></a>-steget.</p>\n<p><code class=\"docutils literal notranslate\">response_add</code> anropas efter att adminformuläret har skickats in och precis efter att objektet och alla relaterade instanser har skapats och sparats. Du kan åsidosätta det för att ändra standardbeteendet efter att objektet har skapats.</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\">ModelAdmin.</span><span class=\"sig-name descname\">response_change</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj</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>Bestämmer <a class=\"reference internal\" href=\"/sv/6.1/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> för <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\">change_view()</code></a>-steget.</p>\n<p><code class=\"docutils literal notranslate\">response_change</code> anropas efter att adminformuläret har skickats in och precis efter att objektet och alla relaterade instanser har sparats. Du kan åsidosätta den för att ändra standardbeteendet efter att objektet har ändrats.</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\">ModelAdmin.</span><span class=\"sig-name descname\">response_delete</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj_display</em>, <em class=\"sig-param\">obj_id</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>Bestämmer <a class=\"reference internal\" href=\"/sv/6.1/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\">HttpResponse</code></a> för <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\">delete_view()</code></a>-steget.</p>\n<p><code class=\"docutils literal notranslate\">response_delete</code> anropas efter att objektet har tagits bort. Du kan åsidosätta det för att ändra standardbeteendet efter att objektet har tagits bort.</p>\n<p><code class=\"docutils literal notranslate\">obj_display</code> är en sträng med namnet på det borttagna objektet.</p>\n<p><code class=\"docutils literal notranslate\">obj_id</code> är den serialiserade identifieraren som används för att hämta det objekt som ska raderas.</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\">ModelAdmin.</span><span class=\"sig-name descname\">get_formset_kwargs</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj</em>, <em class=\"sig-param\">inline</em>, <em class=\"sig-param\">prefix</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>En hook för att anpassa de nyckelordsargument som skickas till konstruktören för ett formulär. Till exempel:, för att skicka <code class=\"docutils literal notranslate\">request</code> till formuläret forms:</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=\"nc\">MyModelAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"nf\">get_formset_kwargs</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> request<span class=\"p\">,</span> obj<span class=\"p\">,</span> inline<span class=\"p\">,</span> prefix<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>get_formset_kwargs<span class=\"p\">(</span>request<span class=\"p\">,</span> obj<span class=\"p\">,</span> inline<span class=\"p\">,</span> prefix<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> request<span class=\"p\">},</span>\n        <span class=\"p\">}</span>\n</code></pre></div>\n<p>Du kan också använda den för att ställa in <code class=\"docutils literal notranslate\">initial</code> för formulär.</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\">ModelAdmin.</span><span class=\"sig-name descname\">get_changeform_initial_data</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</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>En hook för initialdata i formulär för adminändringar. Som standard ges fält initiala värden från <code class=\"docutils literal notranslate\">GET</code>-parametrar. Till exempel: kommer <code class=\"docutils literal notranslate\">?name=initial_value</code> att ställa in fältet <code class=\"docutils literal notranslate\">name</code> initiala värde till att vara <code class=\"docutils literal notranslate\">initial_value</code>.</p>\n<p>Denna metod ska returnera en ordbok i form av <code class=\"docutils literal notranslate\">{'fieldname': 'fieldval'}</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=\"nf\">get_changeform_initial_data</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> request<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\">ModelAdmin.</span><span class=\"sig-name descname\">get_deleted_objects</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">objs</em>, <em class=\"sig-param\">request</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>En hook för att anpassa borttagningsprocessen i <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\">delete_view()</code></a> och <a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/admin/actions/\"><span class=\"doc\">åtgärden</span></a> ”ta bort markerade objekt”.</p>\n<p>Argumentet <code class=\"docutils literal notranslate\">objs</code> är en homogen iterabel av objekt (en <code class=\"docutils literal notranslate\">QuerySet</code> eller en lista av modellinstanser) som ska raderas, och <code class=\"docutils literal notranslate\">request</code> är <a class=\"reference internal\" href=\"/sv/6.1/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</code></a>.</p>\n<p>Denna metod måste returnera en 4-tupel av <code class=\"docutils literal notranslate\">(deleted_objects, model_count, perms_needed, protected)</code>.</p>\n<p><code class=\"docutils literal notranslate\">deleted_objects</code> är en lista med strängar som representerar alla objekt som kommer att raderas. Om det finns några relaterade objekt som ska raderas, är listan nästlad och inkluderar dessa relaterade objekt. Listan formateras i mallen med hjälp av filtret <a class=\"reference internal\" href=\"/sv/6.1/ref/templates/builtins/#std-templatefilter-unordered_list\"><code class=\"xref std std-tfilter docutils literal notranslate\">unordered_list</code></a>.</p>\n<p><code class=\"docutils literal notranslate\">model_count</code> är en ordbok som mappar varje modells <a class=\"reference internal\" href=\"/sv/6.1/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\">verbose_name_plural</code></a> till antalet objekt som kommer att raderas.</p>\n<p><code class=\"docutils literal notranslate\">perms_needed</code> är en uppsättning <code class=\"xref py py-attr docutils literal notranslate\">verbose_name`</code> av de modeller som användaren inte har behörighet att ta bort.</p>\n<p><code class=\"docutils literal notranslate\">protected</code> är en lista med strängar som representerar alla skyddade relaterade objekt som inte kan tas bort. Listan visas i mallen.</p>\n</dd></dl>\n\n<section id=\"other-methods\">\n<h4>Andra metoder<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\">ModelAdmin.</span><span class=\"sig-name descname\">add_view</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">form_url<span class=\"o\">=</span><span class=\"default_value\">''</span></em>, <em class=\"sig-param\">extra_context<span class=\"o\">=</span><span class=\"default_value\">None</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-vy för sidan med tillägg av modellinstans. Se anmärkning nedan.</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\">ModelAdmin.</span><span class=\"sig-name descname\">change_view</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">object_id</em>, <em class=\"sig-param\">form_url<span class=\"o\">=</span><span class=\"default_value\">''</span></em>, <em class=\"sig-param\">extra_context<span class=\"o\">=</span><span class=\"default_value\">None</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-vy för sidan för redigering av modellinstanser. Se anmärkning nedan.</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\">ModelAdmin.</span><span class=\"sig-name descname\">changelist_view</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">extra_context<span class=\"o\">=</span><span class=\"default_value\">None</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-vy för sidan med ändringslista/åtgärder för modellinstanser. Se anmärkning nedan.</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\">ModelAdmin.</span><span class=\"sig-name descname\">delete_view</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">object_id</em>, <em class=\"sig-param\">extra_context<span class=\"o\">=</span><span class=\"default_value\">None</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-vy för bekräftelsesidan för borttagning av modellinstans(er). Se anmärkning nedan.</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\">ModelAdmin.</span><span class=\"sig-name descname\">history_view</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">object_id</em>, <em class=\"sig-param\">extra_context<span class=\"o\">=</span><span class=\"default_value\">None</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>Djangovy för sidan som visar ändringshistoriken för en given modellinstans.</p>\n</dd></dl>\n\n<p>Till skillnad från hook-typen <code class=\"docutils literal notranslate\">ModelAdmin</code>-metoder som beskrivs i föregående avsnitt, är dessa fem metoder i verkligheten utformade för att anropas som Django-vyer från admin-applikationens URL-distributionshanterare för att rendera de sidor som hanterar CRUD-operationer för modellinstanser. Som ett resultat kommer fullständig åsidosättande av dessa metoder att avsevärt ändra beteendet hos adminapplikationen.</p>\n<p>En vanlig anledning till att åsidosätta dessa metoder är att utöka de kontextdata som tillhandahålls till den mall som renderar vyn. I följande exempel åsidosätts change-vyn så att den renderade mallen får lite extra mappningsdata som annars inte skulle vara tillgänglig:</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=\"nc\">MyModelAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    <span class=\"c1\"># A template for a very customized change view:</span>\n    change_form_template <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=\"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=\"nf\">change_view</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> request<span class=\"p\">,</span> object_id<span class=\"p\">,</span> form_url<span class=\"o\">=</span><span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span> extra_context<span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">):</span>\n        extra_context <span class=\"o\">=</span> extra_context <span class=\"ow\">or</span> <span class=\"p\">{}</span>\n        extra_context<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>get_osm_info<span class=\"p\">()</span>\n        <span class=\"k\">return</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span>change_view<span class=\"p\">(</span>\n            request<span class=\"p\">,</span>\n            object_id<span class=\"p\">,</span>\n            form_url<span class=\"p\">,</span>\n            extra_context<span class=\"o\">=</span>extra_context<span class=\"p\">,</span>\n        <span class=\"p\">)</span>\n</code></pre></div>\n<p>Dessa vyer returnerar <a class=\"reference internal\" href=\"/sv/6.1/ref/template-response/#django.template.response.TemplateResponse\" title=\"django.template.response.TemplateResponse\"><code class=\"xref py py-class docutils literal notranslate\">TemplateResponse</code></a>-instanser som gör att du enkelt kan anpassa svarsdata före rendering. För mer information, se <a class=\"reference internal\" href=\"/sv/6.1/ref/template-response/\"><span class=\"doc\">TemplateResponse-dokumentation</span></a>.</p>\n</section>\n</section>\n<section id=\"modeladmin-asset-definitions\">\n<span id=\"id1\"></span><h3><code class=\"docutils literal notranslate\">ModelAdmin</code> tillgångsdefinitioner<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>Det finns tillfällen då du vill lägga till lite CSS och/eller JavaScript i vyerna för att lägga till/ändra. Detta kan åstadkommas genom att använda en <code class=\"docutils literal notranslate\">Media</code> inre klass på din <code class=\"docutils literal notranslate\">ModelAdmin</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=\"nc\">ArticleAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    <span class=\"k\">class</span> <span class=\"nc\">Media</span><span class=\"p\">:</span>\n        css <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        js <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>Appen <a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/staticfiles/\"><span class=\"doc\">staticfiles app</span></a> prependlar <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\">STATIC_URL</code></a> (eller <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-MEDIA_URL\"><code class=\"xref std std-setting docutils literal notranslate\">MEDIA_URL</code></a> om <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\">STATIC_URL</code></a> är <code class=\"docutils literal notranslate\">None</code>) till alla sökvägar för tillgångar. Samma regler gäller som för <a class=\"reference internal\" href=\"/sv/6.1/topics/forms/media/#form-asset-paths\"><span class=\"std std-ref\">regelbundna tillgångsdefinitioner på formulär</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 använder sig av biblioteket <a class=\"reference external\" href=\"https://jquery.com\">jQuery</a>.</p>\n<p>För att undvika konflikter med skript eller bibliotek som tillhandahålls av användaren, är Djangos jQuery (version 3.7.1) namngivet som <code class=\"docutils literal notranslate\">django.jQuery</code>. Om du vill använda jQuery i din egen admin JavaScript utan att inkludera en andra kopia kan du använda objektet <code class=\"docutils literal notranslate\">django.jQuery</code> på changelist och add/edit-vyer. Dessutom måste dina egna adminformulär eller widgets som är beroende av <code class=\"docutils literal notranslate\">django.jQuery</code> ange <code class=\"docutils literal notranslate\">js=['admin/js/jquery.init.js', ...]</code> när <a class=\"reference internal\" href=\"/sv/6.1/topics/forms/media/#assets-as-a-static-definition\"><span class=\"std std-ref\">declaring form media assets</span></a>.</p>\n<p>Klassen <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\">ModelAdmin</code></a> kräver jQuery som standard, så det finns inget behov av att lägga till jQuery i listan över mediaresurser i <code class=\"docutils literal notranslate\">ModelAdmin</code> om du inte har ett specifikt behov. Om du t.ex. behöver jQuery-biblioteket i det globala namnområdet (t.ex. när du använder jQuery-plugins från tredje part) eller om du behöver en nyare version av jQuery måste du inkludera en egen kopia.</p>\n<p>Django tillhandahåller både okomprimerade och ’minifierade’ versioner av jQuery, som <code class=\"docutils literal notranslate\">jquery.js</code> respektive <code class=\"docutils literal notranslate\">jquery.min.js</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\">ModelAdmin</code></a> och <a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin\" title=\"django.contrib.admin.InlineModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\">InlineModelAdmin</code></a> har en <code class=\"docutils literal notranslate\">media</code>-egenskap som returnerar en lista med <code class=\"docutils literal notranslate\">Media</code>-objekt som lagrar sökvägar till JavaScript-filerna för formulären och/eller formuläruppsättningarna. Om <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\">DEBUG</code></a> är <code class=\"docutils literal notranslate\">True</code> kommer den att returnera de okomprimerade versionerna av de olika JavaScript-filerna, inklusive <code class=\"docutils literal notranslate\">jquery.js</code>; om inte, kommer den att returnera de ’minifierade’ versionerna.</p>\n</section>\n</section>\n</section>\n<section id=\"inlinemodeladmin-objects\">\n<span id=\"admin-inlines\"></span><h2>objekt av typen <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>InlineModelAdmin<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\">class</span> </em><span class=\"sig-name descname\">InlineModelAdmin</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\">class</span> </em><span class=\"sig-name descname\">TabularInline</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\">class</span> </em><span class=\"sig-name descname\">StackedInline</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>I administratörsgränssnittet finns möjlighet att redigera modeller på samma sida som en överordnad modell. Dessa kallas inlines. Anta att du har dessa två modeller:</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=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Author</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">100</span><span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Book</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    author <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>Author<span class=\"p\">,</span> on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">)</span>\n    title <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">100</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Du kan redigera de böcker som en författare har skrivit på författarsidan. Du lägger till inlines i en modell genom att ange dem i en <code class=\"docutils literal notranslate\">ModelAdmin.inlines</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n<span class=\"kn\">from</span> <span class=\"nn\">myapp.models</span> <span class=\"kn\">import</span> Author<span class=\"p\">,</span> Book\n\n\n<span class=\"k\">class</span> <span class=\"nc\">BookInline</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>TabularInline<span class=\"p\">):</span>\n    model <span class=\"o\">=</span> Book\n\n\n<span class=\"k\">class</span> <span class=\"nc\">AuthorAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    inlines <span class=\"o\">=</span> <span class=\"p\">[</span>\n        BookInline<span class=\"p\">,</span>\n    <span class=\"p\">]</span>\n\n\nadmin<span class=\"o\">.</span>site<span class=\"o\">.</span>register<span class=\"p\">(</span>Author<span class=\"p\">,</span> AuthorAdmin<span class=\"p\">)</span>\n</code></pre></div>\n<p>Django tillhandahåller två underklasser av <code class=\"docutils literal notranslate\">InlineModelAdmin</code> och de är:</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\">TabularInline</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\">StackedInline</code></a></p></li>\n</ul>\n<p>Skillnaden mellan dessa två är bara den mall som används för att rendera dem.</p>\n</dd></dl>\n\n<section id=\"inlinemodeladmin-options\">\n<h3><code class=\"docutils literal notranslate\">InlineModelAdmin</code> alternativ<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\">InlineModelAdmin</code> delar många av samma funktioner som <code class=\"docutils literal notranslate\">ModelAdmin</code> och lägger till några egna (de delade funktionerna definieras faktiskt i superklassen <code class=\"docutils literal notranslate\">BaseModelAdmin</code>). De delade funktionerna är:</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\">form</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\">fieldsets</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\">fields</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\">formfield_overrides</code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.delete_confirmation_max_display\" title=\"django.contrib.admin.ModelAdmin.delete_confirmation_max_display\"><code class=\"xref py py-attr docutils literal notranslate\">delete_confirmation_max_display</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\">exclude</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\">filter_horizontal</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\">filter_vertical</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\">ordering</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\">prepopulated_fields</code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.get_exclude\" title=\"django.contrib.admin.ModelAdmin.get_exclude\"><code class=\"xref py py-meth docutils literal notranslate\">get_exclude()</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\">get_fieldsets()</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\">get_queryset()</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\">radio_fields</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\">readonly_fields</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\">view_on_site</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\">empty_value_display</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\">autocomplete_fields</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\">raw_id_fields</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\">formfield_for_choice_field()</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\">formfield_for_foreignkey()</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\">formfield_for_manytomany()</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\">has_module_permission()</code></a></p></li>\n</ul>\n<p>Klassen <code class=\"docutils literal notranslate\">InlineModelAdmin</code> lägger till eller anpassar:</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\">InlineModelAdmin.</span><span class=\"sig-name descname\">model</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>Den modell som inline använder. Detta är obligatoriskt.</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\">InlineModelAdmin.</span><span class=\"sig-name descname\">fk_name</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>Namnet på den främmande nyckeln i modellen. I de flesta fall hanteras detta automatiskt, men <code class=\"docutils literal notranslate\">fk_name</code> måste anges explicit om det finns mer än en främmande nyckel till samma överordnade modell.</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\">InlineModelAdmin.</span><span class=\"sig-name descname\">formset</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>Detta är standardvärdet för <a class=\"reference internal\" href=\"/sv/6.1/topics/forms/modelforms/#django.forms.models.BaseInlineFormSet\" title=\"django.forms.models.BaseInlineFormSet\"><code class=\"xref py py-class docutils literal notranslate\">BaseInlineFormSet</code></a>. Att använda din egen formuläruppsättning kan ge dig många möjligheter till anpassning. Inlines är uppbyggda kring <a class=\"reference internal\" href=\"/sv/6.1/topics/forms/modelforms/#model-formsets\"><span class=\"std std-ref\">model formsets</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\">InlineModelAdmin.</span><span class=\"sig-name descname\">form</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>Värdet för <code class=\"docutils literal notranslate\">form</code> är som standard <code class=\"docutils literal notranslate\">ModelForm</code>. Detta är vad som skickas till <a class=\"reference internal\" href=\"/sv/6.1/ref/forms/models/#django.forms.models.inlineformset_factory\" title=\"django.forms.models.inlineformset_factory\"><code class=\"xref py py-func docutils literal notranslate\">inlineformset_factory()</code></a> när formuläret för denna inline skapas.</p>\n<p>För ett exempel, se avsnittet <a class=\"reference internal\" href=\"#admin-custom-validation\"><span class=\"std std-ref\">Lägga till anpassad validering i admin</span></a>.</p>\n</dd></dl>\n\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>När du skriver anpassad validering för formuläret <code class=\"docutils literal notranslate\">InlineModelAdmin</code> bör du vara försiktig med att skriva validering som förlitar sig på funktioner i den överordnade modellen. Om den överordnade modellen inte valideras kan den lämnas i ett inkonsekvent tillstånd enligt beskrivningen i varningen i <a class=\"reference internal\" href=\"/sv/6.1/topics/forms/modelforms/#validation-on-modelform\"><span class=\"std std-ref\">Validering på en 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\">InlineModelAdmin.</span><span class=\"sig-name descname\">classes</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>En lista eller tupel som innehåller extra CSS-klasser som ska tillämpas på den fältuppsättning som återges för inlines. Standardvärdet är <code class=\"docutils literal notranslate\">None</code>. Precis som med klasser som konfigureras i <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\">fieldsets</code></a>, kommer inlines med en <code class=\"docutils literal notranslate\">collapse</code>-klass att initialt kollapsas med hjälp av en expanderbar widget.</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\">InlineModelAdmin.</span><span class=\"sig-name descname\">extra</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>Detta styr antalet extra formulär som formuläruppsättningen ska visa utöver de ursprungliga formulären. Standardvärdet är 3. Mer information finns i <a class=\"reference internal\" href=\"/sv/6.1/topics/forms/formsets/\"><span class=\"doc\">dokumentationen för formulär</span></a>.</p>\n<p>För användare med JavaScript-aktiverade webbläsare finns en ”Add another”-länk som gör det möjligt att lägga till ytterligare inlines utöver de som följer av argumentet <code class=\"docutils literal notranslate\">extra</code>.</p>\n<p>Den dynamiska länken visas inte om antalet formulär som visas för närvarande överstiger <code class=\"docutils literal notranslate\">max_num</code>, eller om användaren inte har JavaScript aktiverat.</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\">InlineModelAdmin.get_extra()</code></a> gör det också möjligt att anpassa antalet extra formulär.</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\">InlineModelAdmin.</span><span class=\"sig-name descname\">max_num</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>Detta styr det maximala antalet formulär som ska visas i inline. Detta korrelerar inte direkt med antalet objekt, men kan göra det om värdet är tillräckligt litet. Se <a class=\"reference internal\" href=\"/sv/6.1/topics/forms/modelforms/#model-formsets-max-num\"><span class=\"std std-ref\">Begränsa antalet redigerbara objekt</span></a> för mer information.</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\">InlineModelAdmin.get_max_num()</code></a> gör det också möjligt att anpassa det maximala antalet extra formulär.</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\">InlineModelAdmin.</span><span class=\"sig-name descname\">min_num</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>Detta styr det minsta antalet formulär som ska visas i inline. Se <a class=\"reference internal\" href=\"/sv/6.1/ref/forms/models/#django.forms.models.modelformset_factory\" title=\"django.forms.models.modelformset_factory\"><code class=\"xref py py-func docutils literal notranslate\">modelformset_factory()</code></a> för mer information.</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\">InlineModelAdmin.get_min_num()</code></a> kan du också anpassa det minsta antalet formulär som visas.</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\">InlineModelAdmin.</span><span class=\"sig-name descname\">raw_id_fields</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>Som standard använder Djangos admin ett gränssnitt med en valbox (&lt;select&gt;) för fält som är <code class=\"docutils literal notranslate\">ForeignKey</code>. Ibland vill du inte ta på dig omkostnaderna för att behöva välja alla relaterade instanser som ska visas i rullgardinsmenyn.</p>\n<p><code class=\"docutils literal notranslate\">raw_id_fields</code> är en lista över fält som du vill ändra till en <code class=\"docutils literal notranslate\">Input</code> widget för antingen en <code class=\"docutils literal notranslate\">ForeignKey</code> eller <code class=\"docutils literal notranslate\">ManyToManyField</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=\"nc\">BookInline</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>TabularInline<span class=\"p\">):</span>\n    model <span class=\"o\">=</span> Book\n    raw_id_fields <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\">InlineModelAdmin.</span><span class=\"sig-name descname\">template</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>Den mall som används för att återge inline på sidan.</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\">InlineModelAdmin.</span><span class=\"sig-name descname\">verbose_name</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>En åsidosättning av <a class=\"reference internal\" href=\"/sv/6.1/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\">verbose_name</code></a> från modellens inre <code class=\"docutils literal notranslate\">Meta</code>-klass.</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\">InlineModelAdmin.</span><span class=\"sig-name descname\">verbose_name_plural</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>En åsidosättning av <a class=\"reference internal\" href=\"/sv/6.1/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\">verbose_name_plural</code></a> från modellens inre <code class=\"docutils literal notranslate\">Meta</code>-klass. Om detta inte ges och <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\">InlineModelAdmin.verbose_name</code></a> är definierat, kommer Django att använda <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\">InlineModelAdmin.verbose_name</code></a> + <code class=\"docutils literal notranslate\">'s'</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\">InlineModelAdmin.</span><span class=\"sig-name descname\">can_delete</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>Anger om inline-objekt kan raderas i inline eller inte. Standardvärdet är <code class=\"docutils literal notranslate\">True</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\">InlineModelAdmin.</span><span class=\"sig-name descname\">show_change_link</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>Anger om inline-objekt som kan ändras i admin har en länk till ändringsformuläret eller inte. Standardvärdet är <code class=\"docutils literal notranslate\">False</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\">InlineModelAdmin.</span><span class=\"sig-name descname\">get_formset</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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>Returnerar en <a class=\"reference internal\" href=\"/sv/6.1/topics/forms/modelforms/#django.forms.models.BaseInlineFormSet\" title=\"django.forms.models.BaseInlineFormSet\"><code class=\"xref py py-class docutils literal notranslate\">BaseInlineFormSet</code></a>-klass för användning i administratörsvyer för tillägg/ändring. <code class=\"docutils literal notranslate\">obj</code> är det överordnade objektet som redigeras eller <code class=\"docutils literal notranslate\">None</code> när du lägger till en ny överordnad. Se exemplet för <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\">ModelAdmin.get_formsets_with_inlines</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\">InlineModelAdmin.</span><span class=\"sig-name descname\">get_extra</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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>Returnerar antalet extra inline-formulär som ska användas. Som standard returneras attributet <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\">InlineModelAdmin.extra</code></a>.</p>\n<p>Åsidosätt denna metod för att programmatiskt bestämma antalet extra inline-formulär. Detta kan t.ex. baseras på modellinstansen (som skickas som nyckelordsargumentet <code class=\"docutils literal notranslate\">obj</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=\"nc\">BinaryTreeAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>TabularInline<span class=\"p\">):</span>\n    model <span class=\"o\">=</span> BinaryTree\n\n    <span class=\"k\">def</span> <span class=\"nf\">get_extra</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> request<span class=\"p\">,</span> obj<span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n        extra <span class=\"o\">=</span> <span class=\"mi\">2</span>\n        <span class=\"k\">if</span> obj<span class=\"p\">:</span>\n            <span class=\"k\">return</span> extra <span class=\"o\">-</span> obj<span class=\"o\">.</span>binarytree_set<span class=\"o\">.</span>count<span class=\"p\">()</span>\n        <span class=\"k\">return</span> extra\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\">InlineModelAdmin.</span><span class=\"sig-name descname\">get_max_num</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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>Returnerar det maximala antalet extra inline-formulär som ska användas. Som standard returneras attributet <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\">InlineModelAdmin.max_num</code></a>.</p>\n<p>Åsidosätt denna metod för att programmatiskt bestämma det maximala antalet inline-formulär. Detta kan t.ex. baseras på modellinstansen (som skickas som nyckelordsargumentet <code class=\"docutils literal notranslate\">obj</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=\"nc\">BinaryTreeAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>TabularInline<span class=\"p\">):</span>\n    model <span class=\"o\">=</span> BinaryTree\n\n    <span class=\"k\">def</span> <span class=\"nf\">get_max_num</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> request<span class=\"p\">,</span> obj<span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n        max_num <span class=\"o\">=</span> <span class=\"mi\">10</span>\n        <span class=\"k\">if</span> obj <span class=\"ow\">and</span> obj<span class=\"o\">.</span>parent<span class=\"p\">:</span>\n            <span class=\"k\">return</span> max_num <span class=\"o\">-</span> <span class=\"mi\">5</span>\n        <span class=\"k\">return</span> max_num\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\">InlineModelAdmin.</span><span class=\"sig-name descname\">get_min_num</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</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>Returnerar det minsta antalet inline-formulär som ska användas. Som standard returneras attributet <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\">InlineModelAdmin.min_num</code></a>.</p>\n<p>Åsidosätt denna metod för att programmatiskt bestämma det minsta antalet inline-formulär. Detta kan t.ex. baseras på modellinstansen (som skickas som nyckelordsargumentet <code class=\"docutils literal notranslate\">obj</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\">InlineModelAdmin.</span><span class=\"sig-name descname\">has_add_permission</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj</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>Ska returnera <code class=\"docutils literal notranslate\">True</code> om det är tillåtet att lägga till ett inline-objekt, annars <code class=\"docutils literal notranslate\">False</code>. <code class=\"docutils literal notranslate\">obj</code> är det överordnade objektet som redigeras eller <code class=\"docutils literal notranslate\">None</code> när du lägger till ett nytt överordnat objekt.</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\">InlineModelAdmin.</span><span class=\"sig-name descname\">has_change_permission</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</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>Ska returnera <code class=\"docutils literal notranslate\">True</code> om det är tillåtet att redigera ett inline-objekt, annars <code class=\"docutils literal notranslate\">False</code>. <code class=\"docutils literal notranslate\">obj</code> är det överordnade objektet som redigeras.</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\">InlineModelAdmin.</span><span class=\"sig-name descname\">has_delete_permission</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">obj<span class=\"o\">=</span><span class=\"default_value\">None</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>Ska returnera <code class=\"docutils literal notranslate\">True</code> om det är tillåtet att ta bort ett inline-objekt, annars <code class=\"docutils literal notranslate\">False</code>. <code class=\"docutils literal notranslate\">obj</code> är det överordnade objektet som redigeras.</p>\n</dd></dl>\n\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Argumentet <code class=\"docutils literal notranslate\">obj</code> som skickas till metoderna <code class=\"docutils literal notranslate\">InlineModelAdmin</code> är det överordnade objekt som redigeras eller <code class=\"docutils literal notranslate\">None</code> när ett nytt överordnat objekt läggs till.</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>Arbeta med en modell med två eller flera främmande nycklar till samma överordnade modell<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>Det är ibland möjligt att ha mer än en främmande nyckel till samma modell. Ta den här modellen till exempel:</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=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Person</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">128</span><span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Friendship</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    to_person <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>\n        Person<span class=\"p\">,</span> on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">,</span> related_name<span class=\"o\">=</span><span class=\"s2\">&quot;friends&quot;</span>\n    <span class=\"p\">)</span>\n    from_person <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>\n        Person<span class=\"p\">,</span> on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">,</span> related_name<span class=\"o\">=</span><span class=\"s2\">&quot;from_friends&quot;</span>\n    <span class=\"p\">)</span>\n</code></pre></div>\n<p>Om du vill visa en inline på sidorna för tillägg/ändring av administratörer för <code class=\"docutils literal notranslate\">Person</code> måste du uttryckligen definiera den främmande nyckeln eftersom den inte kan göra det automatiskt:</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n<span class=\"kn\">from</span> <span class=\"nn\">myapp.models</span> <span class=\"kn\">import</span> Friendship<span class=\"p\">,</span> Person\n\n\n<span class=\"k\">class</span> <span class=\"nc\">FriendshipInline</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>TabularInline<span class=\"p\">):</span>\n    model <span class=\"o\">=</span> Friendship\n    fk_name <span class=\"o\">=</span> <span class=\"s2\">&quot;to_person&quot;</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    inlines <span class=\"o\">=</span> <span class=\"p\">[</span>\n        FriendshipInline<span class=\"p\">,</span>\n    <span class=\"p\">]</span>\n\n\nadmin<span class=\"o\">.</span>site<span class=\"o\">.</span>register<span class=\"p\">(</span>Person<span class=\"p\">,</span> PersonAdmin<span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"working-with-many-to-many-models\">\n<h3>Arbeta med många-till-många-modeller<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>Som standard kommer admin-widgets för många-till-många-relationer att visas på den modell som innehåller den faktiska referensen till <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a>. Beroende på din <code class=\"docutils literal notranslate\">ModelAdmin</code>-definition kommer varje many-to-many-fält i din modell att representeras av en standard HTML <code class=\"docutils literal notranslate\">&lt;select multiple&gt;</code>, ett horisontellt eller vertikalt filter eller en <code class=\"docutils literal notranslate\">raw_id_fields</code>-widget. Det är dock också möjligt att ersätta dessa widgetar med inlines.</p>\n<p>Anta att vi har följande modeller:</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=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Person</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">128</span><span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Group</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">128</span><span class=\"p\">)</span>\n    members <span class=\"o\">=</span> models<span class=\"o\">.</span>ManyToManyField<span class=\"p\">(</span>Person<span class=\"p\">,</span> related_name<span class=\"o\">=</span><span class=\"s2\">&quot;groups&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Om du vill visa många-till-många-relationer med hjälp av en inline kan du göra det genom att definiera ett <code class=\"docutils literal notranslate\">InlineModelAdmin</code>-objekt för relationen:</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n<span class=\"kn\">from</span> <span class=\"nn\">myapp.models</span> <span class=\"kn\">import</span> Group\n\n\n<span class=\"k\">class</span> <span class=\"nc\">MembershipInline</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>TabularInline<span class=\"p\">):</span>\n    model <span class=\"o\">=</span> Group<span class=\"o\">.</span>members<span class=\"o\">.</span>through\n\n\n<span class=\"k\">class</span> <span class=\"nc\">GroupAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    inlines <span class=\"o\">=</span> <span class=\"p\">[</span>\n        MembershipInline<span class=\"p\">,</span>\n    <span class=\"p\">]</span>\n    exclude <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;members&quot;</span><span class=\"p\">]</span>\n\n\nadmin<span class=\"o\">.</span>site<span class=\"o\">.</span>register<span class=\"p\">(</span>Group<span class=\"p\">,</span> GroupAdmin<span class=\"p\">)</span>\n</code></pre></div>\n<p>Det finns två funktioner som är värda att notera i detta exempel.</p>\n<p>För det första - klassen <code class=\"docutils literal notranslate\">MembershipInline</code> refererar till <code class=\"docutils literal notranslate\">Group.members.through</code>. Attributet <code class=\"docutils literal notranslate\">through</code> är en referens till den modell som hanterar relationen många-till-många. Denna modell skapas automatiskt av Django när du definierar ett många-till-många-fält.</p>\n<p>För det andra måste <code class=\"docutils literal notranslate\">GroupAdmin</code> manuellt utesluta fältet <code class=\"docutils literal notranslate\">members</code>. Django visar en admin-widget för ett många-till-många-fält på den modell som definierar relationen (i det här fallet <code class=\"docutils literal notranslate\">Group</code>). Om du vill använda en inline-modell för att representera many-to-many-relationen måste du tala om för Djangos admin att <em>inte</em> visa denna widget - annars kommer du att få två widgets på din admin-sida för att hantera relationen.</p>\n<p>Observera att när du använder den här tekniken utlöses inte <a class=\"reference internal\" href=\"/sv/6.1/ref/signals/#django.db.models.signals.m2m_changed\" title=\"django.db.models.signals.m2m_changed\"><code class=\"xref py py-data docutils literal notranslate\">m2m_changed</code></a>-signalerna. Detta beror på att när det gäller administratören är <code class=\"docutils literal notranslate\">through</code> bara en modell med två främmande nyckelfält snarare än en många-till-många-relation.</p>\n<p>I alla andra avseenden är <code class=\"docutils literal notranslate\">InlineModelAdmin</code> exakt samma som alla andra. Du kan anpassa utseendet med hjälp av någon av de normala egenskaperna för <code class=\"docutils literal notranslate\">ModelAdmin</code>.</p>\n</section>\n<section id=\"working-with-many-to-many-intermediary-models\">\n<h3>Arbeta med många-till-manga förmedlingsmodeller<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>När du anger en mellanliggande modell med argumentet <code class=\"docutils literal notranslate\">through</code> till en <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a>, kommer administratören inte att visa en widget som standard. Detta beror på att varje instans av den mellanliggande modellen kräver mer information än vad som kan visas i en enda widget, och den layout som krävs för flera widgetar varierar beroende på den mellanliggande modellen.</p>\n<p>Vi vill dock fortfarande kunna redigera den informationen inline. Lyckligtvis kan vi göra detta med inline admin-modeller. Anta att vi har följande modeller:</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=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Person</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">128</span><span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Group</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">128</span><span class=\"p\">)</span>\n    members <span class=\"o\">=</span> models<span class=\"o\">.</span>ManyToManyField<span class=\"p\">(</span>Person<span class=\"p\">,</span> through<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=\"nc\">Membership</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    person <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>Person<span class=\"p\">,</span> on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">)</span>\n    group <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>Group<span class=\"p\">,</span> on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">)</span>\n    date_joined <span class=\"o\">=</span> models<span class=\"o\">.</span>DateField<span class=\"p\">()</span>\n    invite_reason <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">64</span><span class=\"p\">)</span>\n\n    <span class=\"k\">class</span> <span class=\"nc\">Meta</span><span class=\"p\">:</span>\n        constraints <span class=\"o\">=</span> <span class=\"p\">[</span>\n            models<span class=\"o\">.</span>UniqueConstraint<span class=\"p\">(</span>\n                fields<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> name<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>Det första steget för att visa denna mellanliggande modell i admin är att definiera en inline-klass för modellen <code class=\"docutils literal notranslate\">Membership</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=\"nc\">MembershipInline</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>TabularInline<span class=\"p\">):</span>\n    model <span class=\"o\">=</span> Membership\n    extra <span class=\"o\">=</span> <span class=\"mi\">1</span>\n</code></pre></div>\n<p>I det här exemplet används standardvärdena för <code class=\"docutils literal notranslate\">InlineModelAdmin</code> för modellen <code class=\"docutils literal notranslate\">Membership</code> och de extra tilläggsformulären begränsas till ett. Detta kan anpassas med hjälp av något av de alternativ som är tillgängliga för klasserna <code class=\"docutils literal notranslate\">InlineModelAdmin</code>.</p>\n<p>Skapa nu adminvyer för modellerna <code class=\"docutils literal notranslate\">Person</code> och <code class=\"docutils literal notranslate\">Group</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=\"nc\">PersonAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    inlines <span class=\"o\">=</span> <span class=\"p\">[</span>MembershipInline<span class=\"p\">]</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">GroupAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    inlines <span class=\"o\">=</span> <span class=\"p\">[</span>MembershipInline<span class=\"p\">]</span>\n</code></pre></div>\n<p>Slutligen registrerar du dina modeller <code class=\"docutils literal notranslate\">Person</code> och <code class=\"docutils literal notranslate\">Group</code> på administratörssidan:</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>admin<span class=\"o\">.</span>site<span class=\"o\">.</span>register<span class=\"p\">(</span>Person<span class=\"p\">,</span> PersonAdmin<span class=\"p\">)</span>\nadmin<span class=\"o\">.</span>site<span class=\"o\">.</span>register<span class=\"p\">(</span>Group<span class=\"p\">,</span> GroupAdmin<span class=\"p\">)</span>\n</code></pre></div>\n<p>Nu är din administratörswebbplats inställd för att redigera <code class=\"docutils literal notranslate\">Membership</code>-objekt inline från antingen <code class=\"docutils literal notranslate\">Person</code> eller <code class=\"docutils literal notranslate\">Group</code> detaljsidorna.</p>\n</section>\n<section id=\"using-generic-relations-as-an-inline\">\n<span id=\"id3\"></span><h3>Använda generiska relationer som en inline<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>Det är möjligt att använda en inline med generiskt relaterade objekt. Låt oss säga att du har följande modeller:</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=\"nn\">django.contrib.contenttypes.fields</span> <span class=\"kn\">import</span> GenericForeignKey\n<span class=\"kn\">from</span> <span class=\"nn\">django.contrib.contenttypes.models</span> <span class=\"kn\">import</span> ContentType\n<span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Image</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    image <span class=\"o\">=</span> models<span class=\"o\">.</span>ImageField<span class=\"p\">(</span>upload_to<span class=\"o\">=</span><span class=\"s2\">&quot;images&quot;</span><span class=\"p\">)</span>\n    content_type <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>ContentType<span class=\"p\">,</span> on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">)</span>\n    object_id <span class=\"o\">=</span> models<span class=\"o\">.</span>PositiveIntegerField<span class=\"p\">()</span>\n    content_object <span class=\"o\">=</span> GenericForeignKey<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=\"nc\">Product</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">100</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Om du vill tillåta redigering och skapande av en <code class=\"docutils literal notranslate\">Image</code>-instans på <code class=\"docutils literal notranslate\">Product</code>, lägga till/ändra vyer kan du använda <a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/contenttypes/#django.contrib.contenttypes.admin.GenericTabularInline\" title=\"django.contrib.contenttypes.admin.GenericTabularInline\"><code class=\"xref py py-class docutils literal notranslate\">GenericTabularInline</code></a> eller <a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/contenttypes/#django.contrib.contenttypes.admin.GenericStackedInline\" title=\"django.contrib.contenttypes.admin.GenericStackedInline\"><code class=\"xref py py-class docutils literal notranslate\">GenericStackedInline</code></a> (båda underklasserna till <a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/contenttypes/#django.contrib.contenttypes.admin.GenericInlineModelAdmin\" title=\"django.contrib.contenttypes.admin.GenericInlineModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\">GenericInlineModelAdmin</code></a>) som tillhandahålls av <a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/contenttypes/#module-django.contrib.contenttypes.admin\" title=\"django.contrib.contenttypes.admin\"><code class=\"xref py py-mod docutils literal notranslate\">admin</code></a>. De implementerar visuella layouter med tabeller och staplar för de formulär som representerar inline-objekten, precis som deras icke-generiska motsvarigheter. De beter sig precis som alla andra inline. I din <code class=\"docutils literal notranslate\">admin.py</code> för den här exempelappen:</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n<span class=\"kn\">from</span> <span class=\"nn\">django.contrib.contenttypes.admin</span> <span class=\"kn\">import</span> GenericTabularInline\n\n<span class=\"kn\">from</span> <span class=\"nn\">myapp.models</span> <span class=\"kn\">import</span> Image<span class=\"p\">,</span> Product\n\n\n<span class=\"k\">class</span> <span class=\"nc\">ImageInline</span><span class=\"p\">(</span>GenericTabularInline<span class=\"p\">):</span>\n    model <span class=\"o\">=</span> Image\n\n\n<span class=\"k\">class</span> <span class=\"nc\">ProductAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    inlines <span class=\"o\">=</span> <span class=\"p\">[</span>\n        ImageInline<span class=\"p\">,</span>\n    <span class=\"p\">]</span>\n\n\nadmin<span class=\"o\">.</span>site<span class=\"o\">.</span>register<span class=\"p\">(</span>Product<span class=\"p\">,</span> ProductAdmin<span class=\"p\">)</span>\n</code></pre></div>\n<p>Se <a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/contenttypes/\"><span class=\"doc\">contenttypes-dokumentationen</span></a> för mer specifik information.</p>\n</section>\n</section>\n<section id=\"adding-custom-validation-to-the-admin\">\n<span id=\"admin-custom-validation\"></span><h2>Lägga till anpassad validering i 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>Admin använder <a class=\"reference internal\" href=\"/sv/6.1/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\">ModelForm</code></a>. För att lägga till anpassad validering tillhandahåller du en egen <code class=\"docutils literal notranslate\">ModelForm</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=\"nc\">ArticleForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>ModelForm<span class=\"p\">):</span>\n    <span class=\"k\">def</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>cleaned_data<span class=\"p\">[</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>Konfigurera sedan <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\">ModelAdmin</code></a> att använda formuläret:</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=\"nc\">ArticleAdmin</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>ModelAdmin<span class=\"p\">):</span>\n    form <span class=\"o\">=</span> ArticleForm\n</code></pre></div>\n<p>Eller konfigurera en <a class=\"reference internal\" href=\"#django.contrib.admin.InlineModelAdmin\" title=\"django.contrib.admin.InlineModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\">InlineModelAdmin</code></a> att använda formuläret:</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=\"nc\">ArticleInline</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>TabularInline<span class=\"p\">):</span>\n    model <span class=\"o\">=</span> Article\n    form <span class=\"o\">=</span> ArticleForm\n</code></pre></div>\n<p>Det är viktigt att du använder en <code class=\"docutils literal notranslate\">ModelForm</code>; annars kan saker gå sönder. Se dokumentationen om <a class=\"reference internal\" href=\"/sv/6.1/ref/forms/\"><span class=\"doc\">formulär</span></a> och <a class=\"reference internal\" href=\"/sv/6.1/ref/forms/validation/\"><span class=\"doc\">anpassad validering</span></a>, samt särskilt <a class=\"reference internal\" href=\"/sv/6.1/topics/forms/modelforms/#overriding-modelform-clean-method\"><span class=\"std std-ref\">anmärkningarna om validering av modellformulär</span></a>, för mer information.</p>\n</section>\n<section id=\"overriding-admin-templates\">\n<span id=\"admin-overriding-templates\"></span><h2>Åsidosätta adminmallar<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>Du kan åsidosätta många av de mallar som adminmodulen använder för att generera de olika sidorna på en adminwebbplats. Du kan till och med åsidosätta några av dessa mallar för en viss app eller en viss modell.</p>\n<section id=\"set-up-your-project-s-admin-template-directories\">\n<h3>Konfigurera projektets kataloger för adminmallar<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>Mallfilerna för admin finns i katalogen <a class=\"extlink-source reference external\" href=\"https://github.com/django/django/blob/stable/6.1.x/django/contrib/admin/templates/admin\">django/contrib/admin/templates/admin</a>.</p>\n<p>För att åsidosätta en eller flera av dem skapar du först en <code class=\"docutils literal notranslate\">admin</code>-katalog i ditt projekts <code class=\"docutils literal notranslate\">templates</code>-katalog. Detta kan vara någon av de kataloger som du angav i <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-TEMPLATES-DIRS\"><code class=\"xref std std-setting docutils literal notranslate\">DIRS</code></a> alternativet för <code class=\"docutils literal notranslate\">DjangoTemplates</code> backend i <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-TEMPLATES\"><code class=\"xref std std-setting docutils literal notranslate\">TEMPLATES</code></a> inställningen. Om du har anpassat alternativet <code class=\"docutils literal notranslate\">'loaders'</code>, se till att <code class=\"docutils literal notranslate\">'django.template.loaders.filesystem.Loader'</code> visas före <code class=\"docutils literal notranslate\">'django.template.loaders.app_directories.Loader'</code> så att dina anpassade mallar kommer att hittas av mallinläsningssystemet före de som ingår i <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\">django.contrib.admin</code></a>.</p>\n<p>I denna <code class=\"docutils literal notranslate\">admin</code>-katalog skapar du underkataloger med namn efter din app. Inom dessa app-underkataloger skapar du underkataloger med namn efter dina modeller. Observera att admin-appen kommer att skriva modellnamnet med gemener när den letar efter katalogen, så se till att du namnger katalogen med gemener om du ska köra din app på ett filsystem som är skiftlägeskänsligt.</p>\n<p>För att åsidosätta en adminmall för en specifik app, kopiera och redigera mallen från <a class=\"extlink-source reference external\" href=\"https://github.com/django/django/blob/stable/6.1.x/django/contrib/admin/templates/admin\">django/contrib/admin/templates/admin</a>-katalogen och spara den i en av de kataloger du just skapat.</p>\n<p>Om vi t.ex. vill lägga till ett verktyg i ändringslistan för alla modeller i en app med namnet ”min_app”, kopierar vi ”contrib/admin/templates/admin/change_list.html” till katalogen ”templates/admin/my_app/” i vårt projekt och gör de ändringar som krävs.</p>\n<p>Om vi vill lägga till ett verktyg i ändringslistan för endast en specifik modell med namnet ”Page”, skulle vi kopiera samma fil till katalogen ”templates/admin/my_app/page” i vårt projekt.</p>\n</section>\n<section id=\"overriding-vs-replacing-an-admin-template\">\n<h3>Åsidosätta eller ersätta en administratörsmall<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å grund av adminmallarnas modulära design är det vanligtvis varken nödvändigt eller tillrådligt att ersätta en hel mall. Det är nästan alltid bättre att åsidosätta endast den del av mallen som du behöver ändra.</p>\n<p>För att fortsätta exemplet ovan vill vi lägga till en ny länk bredvid verktyget <code class=\"docutils literal notranslate\">History</code> för modellen <code class=\"docutils literal notranslate\">Page</code>. Efter att ha tittat på <code class=\"docutils literal notranslate\">change_form.html</code> konstaterar vi att vi bara behöver åsidosätta blocket <code class=\"docutils literal notranslate\">object-tools-items</code>. Här är därför vår nya <code class=\"docutils literal notranslate\">change_form.html</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>Och så är det klart! Om vi placerade den här filen i katalogen <code class=\"docutils literal notranslate\">templates/admin/my_app</code> skulle vår länk visas på ändringsformuläret för alla modeller inom 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>Mallar som kan åsidosättas per app eller modell<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>Inte alla mallar i <code class=\"docutils literal notranslate\">contrib/admin/templates/admin</code> kan åsidosättas per app eller per modell. Följande kan det:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">actions.html</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">app_index.html</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">ändra_formulär.html</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">change_form_actions.html</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">ändra_formulär_objekt_verktyg.html</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">ändra_lista.html</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">ändra_lista_objekt_verktyg.html</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">ändra_lista_resultat.html</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">datum_hierarki.html</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">delete_confirmation.html</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">objekt_historia.html</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">pagination.html</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">popup_response.html</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">förpopulerade_fält_js.html</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">search_form.html</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">submit_line.html</code></p></li>\n</ul>\n<p>För de mallar som inte kan åsidosättas på detta sätt kan du ändå åsidosätta dem för hela ditt projekt genom att placera den nya versionen i katalogen <code class=\"docutils literal notranslate\">templates/admin</code>. Detta är särskilt användbart för att skapa anpassade 404- och 500-sidor.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Vissa av adminmallarna, t.ex. <code class=\"docutils literal notranslate\">change_list_results.html</code>, används för att återge anpassade inkluderingstaggar. Dessa kan åsidosättas, men i sådana fall är det förmodligen bättre att du skapar din egen version av taggen i fråga och ger den ett annat namn. På så sätt kan du använda den selektivt.</p>\n</aside>\n</section>\n<section id=\"root-and-login-templates\">\n<h3>Rot- och inloggningsmallar<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>Om du vill ändra index-, inloggnings- eller utloggningsmallarna är det bättre att skapa en egen instans av <code class=\"docutils literal notranslate\">AdminSite</code> (se nedan) och ändra egenskaperna <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\">AdminSite.index_template</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\">AdminSite.login_template</code></a> eller <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\">AdminSite.logout_template</code></a>.</p>\n</section>\n</section>\n<section id=\"theming-support\">\n<span id=\"admin-theming\"></span><h2>Stöd för tematisering<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>Administratören använder CSS-variabler för att definiera färger och teckensnitt. Detta gör det möjligt att ändra teman utan att behöva åsidosätta många enskilda CSS-regler. Om du t.ex. föredrar lila i stället för blått kan du lägga till en <code class=\"docutils literal notranslate\">admin/base.html</code>-mallöverskrivning i ditt projekt:</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=\"p\">:</span><span class=\"nd\">root</span> <span class=\"p\">{</span>\n  <span class=\"nv\">--primary</span><span class=\"p\">:</span> <span class=\"mh\">#9774d5</span><span class=\"p\">;</span>\n  <span class=\"nv\">--secondary</span><span class=\"p\">:</span> <span class=\"mh\">#785cab</span><span class=\"p\">;</span>\n  <span class=\"nv\">--link-fg</span><span class=\"p\">:</span> <span class=\"mh\">#7c449b</span><span class=\"p\">;</span>\n  <span class=\"nv\">--link-selected-fg</span><span class=\"p\">:</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>Listan över CSS-variabler definieras i <a class=\"extlink-source reference external\" href=\"https://github.com/django/django/blob/stable/6.1.x/django/contrib/admin/static/admin/css/base.css\">django/contrib/admin/static/admin/css/base.css</a>.</p>\n<p>Variabler för mörkt läge, som respekterar mediefrågan <a class=\"reference external\" href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/&#64;media/prefers-color-scheme\">prefers-color-scheme</a>, definieras i <a class=\"extlink-source reference external\" href=\"https://github.com/django/django/blob/stable/6.1.x/django/contrib/admin/static/admin/css/dark_mode.css\">django/contrib/admin/static/admin/css/dark_mode.css</a>. Detta är länkat till dokumentet i <code class=\"docutils literal notranslate\">{% block dark-mode-vars %}</code>.</p>\n</section>\n<section id=\"extrabody-block\">\n<span id=\"extrabody\"></span><h2><code class=\"docutils literal notranslate\">extrabody</code>-block<a class=\"heading-anchor\" href=\"#extrabody-block\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Du kan lägga till anpassad HTML, JavaScript eller annat innehåll som ska visas precis före den avslutande taggen <code class=\"docutils literal notranslate\">&lt;/body&gt;</code> i mallar som utökar <code class=\"docutils literal notranslate\">admin/base.html</code> genom att utöka blocket <code class=\"docutils literal notranslate\">extrabody</code>. Om du t.ex. vill att en varning ska visas vid sidladdning kan du lägga till en mallöverskrivning för <code class=\"docutils literal notranslate\">admin/base.html</code> i ditt projekt:</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=\"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=\"kd\">function</span><span class=\"p\">()</span> <span class=\"p\">{</span>\n            <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=\"p\">});</span>\n    <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>objekt av typen <code class=\"docutils literal notranslate\">AdminSite</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\">class</span> </em><span class=\"sig-name descname\">AdminSite</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">name<span class=\"o\">=</span><span class=\"default_value\">'admin'</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>En Django administrativ webbplats representeras av en instans av <code class=\"docutils literal notranslate\">django.contrib.admin.sites.AdminSite</code>; som standard skapas en instans av denna klass som <code class=\"docutils literal notranslate\">django.contrib.admin.site</code> och du kan registrera dina modeller och <code class=\"docutils literal notranslate\">ModelAdmin</code>-instanser med den.</p>\n<p>Om du vill anpassa standardwebbplatsen för administratörer kan du <a class=\"reference internal\" href=\"#overriding-default-admin-site\"><span class=\"std std-ref\">åsidosätta den</span></a>.</p>\n<p>När du konstruerar en instans av en <code class=\"docutils literal notranslate\">AdminSite</code> kan du ange ett unikt instansnamn med hjälp av argumentet <code class=\"docutils literal notranslate\">name</code> till konstruktören. Detta instansnamn används för att identifiera instansen, särskilt när <a class=\"reference internal\" href=\"#admin-reverse-urls\"><span class=\"std std-ref\">reversing admin URLs</span></a>. Om inget instansnamn anges kommer ett standardinstansnamn på <code class=\"docutils literal notranslate\">admin</code> att användas. Se <a class=\"reference internal\" href=\"#customizing-adminsite\"><span class=\"std std-ref\">Anpassning av AdminSite-klassen</span></a> för ett exempel på anpassning av klassen <a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite\" title=\"django.contrib.admin.AdminSite\"><code class=\"xref py py-class docutils literal notranslate\">AdminSite</code></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\">django.contrib.admin.sites.</span><span class=\"sig-name descname\">all_sites</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>En <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\">WeakSet</code></a> innehåller alla instanser av administratörsplatser.</p>\n</dd></dl>\n\n<section id=\"adminsite-attributes\">\n<h3>attribut för <code class=\"docutils literal notranslate\">AdminSite</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>Mallar kan åsidosätta eller utöka basadministratörsmallar enligt beskrivningen i <a class=\"reference internal\" href=\"#admin-overriding-templates\"><span class=\"std std-ref\">Åsidosätta adminmallar</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\">AdminSite.</span><span class=\"sig-name descname\">site_header</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>Den text som ska placeras högst upp på varje administratörssida, som en <code class=\"docutils literal notranslate\">&lt;div&gt;</code> (en sträng). Som standard är detta ”Django administration”.</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\">AdminSite.</span><span class=\"sig-name descname\">site_title</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>Texten som ska placeras i slutet av varje administratörssidas <code class=\"docutils literal notranslate\">&lt;title&gt;</code> (en sträng). Som standard är detta ”Django site admin”.</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\">AdminSite.</span><span class=\"sig-name descname\">site_url</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>URL:en för länken ”View site” högst upp på varje administratörssida. Som standard är <code class=\"docutils literal notranslate\">site_url</code> <code class=\"docutils literal notranslate\">/</code>. Ställ in den på <code class=\"docutils literal notranslate\">None</code> för att ta bort länken.</p>\n<p>För webbplatser som körs på en underväg kontrollerar metoden <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\">each_context()</code></a> om den aktuella begäran har <code class=\"docutils literal notranslate\">request.META['SCRIPT_NAME']</code> inställt och använder det värdet om <code class=\"docutils literal notranslate\">site_url</code> inte är inställt på något annat än <code class=\"docutils literal notranslate\">/</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\">AdminSite.</span><span class=\"sig-name descname\">index_title</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>Den text som ska placeras högst upp på sidan med adminindex (en sträng). Som standard är detta ”Webbplatsadministration”.</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\">AdminSite.</span><span class=\"sig-name descname\">index_template</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>Sökväg till en anpassad mall som kommer att användas av huvudindexvyn på adminwebbplatsen.</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\">AdminSite.</span><span class=\"sig-name descname\">app_index_template</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>Sökväg till en anpassad mall som kommer att användas av indexvyn för appen för administratörswebbplatsen.</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\">AdminSite.</span><span class=\"sig-name descname\">empty_value_display</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>Den sträng som ska användas för att visa tomma värden i adminwebbplatsens ändringslista. Standardvärdet är ett streck. Värdet kan också åsidosättas per <code class=\"docutils literal notranslate\">ModelAdmin</code> och för ett anpassat fält inom en <code class=\"docutils literal notranslate\">ModelAdmin</code> genom att ange ett <code class=\"docutils literal notranslate\">empty_value_display</code>-attribut för fältet. Se <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\">ModelAdmin.empty_value_display</code></a> för exempel.</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\">AdminSite.</span><span class=\"sig-name descname\">enable_nav_sidebar</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>Ett booleskt värde som avgör om navigationssidofältet ska visas på större skärmar. Som standard är det inställt på <code class=\"docutils literal notranslate\">True</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\">AdminSite.</span><span class=\"sig-name descname\">final_catch_all_view</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>Ett booleskt värde som avgör om en sista vy ska läggas till i admin som omdirigerar oautentiserade användare till inloggningssidan. Som standard är det inställt på <code class=\"docutils literal notranslate\">True</code>.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>Det rekommenderas inte att ställa in detta på ”false” eftersom vyn skyddar mot ett potentiellt integritetsproblem med modelluppräkning.</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\">AdminSite.</span><span class=\"sig-name descname\">login_template</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>Sökväg till en anpassad mall som kommer att användas av inloggningsvyn för adminwebbplatsen.</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\">AdminSite.</span><span class=\"sig-name descname\">login_form</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>Underklass till <a class=\"reference internal\" href=\"/sv/6.1/topics/auth/default/#django.contrib.auth.forms.AuthenticationForm\" title=\"django.contrib.auth.forms.AuthenticationForm\"><code class=\"xref py py-class docutils literal notranslate\">AuthenticationForm</code></a> som kommer att användas av inloggningsvyn på adminsidan.</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\">AdminSite.</span><span class=\"sig-name descname\">logout_template</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>Sökväg till en anpassad mall som kommer att användas av inloggningsvyn för adminwebbplatsen.</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\">AdminSite.</span><span class=\"sig-name descname\">password_change_form</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\" role=\"note\">\n<p class=\"version-note-title\">New in Django 6.0</p></aside>\n<p>Underklass till <a class=\"reference internal\" href=\"/sv/6.1/topics/auth/default/#django.contrib.auth.forms.PasswordChangeForm\" title=\"django.contrib.auth.forms.PasswordChangeForm\"><code class=\"xref py py-class docutils literal notranslate\">PasswordChangeForm</code></a> som används av administrationswebbplatsens vy för lösenordsbyte.</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\">AdminSite.</span><span class=\"sig-name descname\">password_change_template</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>Sökväg till en anpassad mall som kommer att användas av vyn för ändring av lösenord på adminwebbplatsen.</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\">AdminSite.</span><span class=\"sig-name descname\">password_change_done_template</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>Sökväg till en anpassad mall som kommer att användas av vyn för ändring av lösenord på administratörssidan.</p>\n</dd></dl>\n\n</section>\n<section id=\"adminsite-methods\">\n<h3>metoder för <code class=\"docutils literal notranslate\">AdminSite</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\">AdminSite.</span><span class=\"sig-name descname\">each_context</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</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>Returnerar en ordlista med variabler som ska läggas in i mallkontexten för varje sida på administratörssajten.</p>\n<p>Innehåller följande variabler och värden som standard:</p>\n<ul>\n<li><p><code class=\"docutils literal notranslate\">site_header</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\">AdminSite.site_header</code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\">site_title</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\">AdminSite.site_title</code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\">site_url</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\">AdminSite.site_url</code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\">has_permission</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\">AdminSite.has_permission()</code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\">available_apps</code>: en lista över applikationer från <a class=\"reference internal\" href=\"/sv/6.1/ref/applications/\"><span class=\"doc\">application registry</span></a> som är tillgängliga för den aktuella användaren. Varje post i listan är en dict som representerar en applikation med följande nycklar:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">app_label</code>: applikationens etikett</p></li>\n<li><p><code class=\"docutils literal notranslate\">app_url</code>: URL:en för applikationsindexet i admin</p></li>\n<li><p><code class=\"docutils literal notranslate\">has_module_perms</code>: ett boolean som anger om visning av och åtkomst till modulens indexsida är tillåten för den aktuella användaren</p></li>\n<li><p><code class=\"docutils literal notranslate\">models</code>: en lista över de modeller som är tillgängliga i applikationen</p></li>\n</ul>\n<p>Varje modell är en diktafon med följande tangenter:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">model</code>: modellklassen</p></li>\n<li><p><code class=\"docutils literal notranslate\">object_name</code>: modellens klassnamn</p></li>\n<li><p><code class=\"docutils literal notranslate\">namn</code>: modellens namn i plural</p></li>\n<li><p><code class=\"docutils literal notranslate\">perms</code>: ett <code class=\"docutils literal notranslate\">dict</code> som spårar <code class=\"docutils literal notranslate\">add</code>, <code class=\"docutils literal notranslate\">change</code>, <code class=\"docutils literal notranslate\">delete</code> och <code class=\"docutils literal notranslate\">view</code>-behörigheter</p></li>\n<li><p><code class=\"docutils literal notranslate\">admin_url</code>: URL för modellens ändringslista för administratörer</p></li>\n<li><p><code class=\"docutils literal notranslate\">add_url</code>: administratörs-URL för att lägga till en ny modellinstans</p></li>\n</ul>\n</li>\n<li><p><code class=\"docutils literal notranslate\">is_popup</code>: om den aktuella sidan visas i ett popup-fönster</p></li>\n<li><p><code class=\"docutils literal notranslate\">is_nav_sidebar_enabled</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\">AdminSite.enable_nav_sidebar</code></a></p></li>\n<li><p><code class=\"docutils literal notranslate\">log_entries</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\">AdminSite.get_log_entries()</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\">AdminSite.</span><span class=\"sig-name descname\">get_app_list</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">app_label<span class=\"o\">=</span><span class=\"default_value\">None</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>Returnerar en lista över applikationer från <a class=\"reference internal\" href=\"/sv/6.1/ref/applications/\"><span class=\"doc\">applikationsregistret</span></a> som är tillgängliga för den aktuella användaren. Du kan eventuellt skicka ett <code class=\"docutils literal notranslate\">app_label</code>-argument för att få detaljer för en enda app. Varje post i listan är en ordbok som representerar en applikation med följande nycklar:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">app_label</code>: applikationens etikett</p></li>\n<li><p><code class=\"docutils literal notranslate\">app_url</code>: URL:en för applikationsindexet i admin</p></li>\n<li><p><code class=\"docutils literal notranslate\">has_module_perms</code>: ett boolean som anger om visning av och åtkomst till modulens indexsida är tillåten för den aktuella användaren</p></li>\n<li><p><code class=\"docutils literal notranslate\">models</code>: en lista över de modeller som är tillgängliga i applikationen</p></li>\n<li><p><code class=\"docutils literal notranslate\">name</code>: namnet på applikationen</p></li>\n</ul>\n<p>Varje modell är en ordbok med följande nycklar:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">model</code>: modellklassen</p></li>\n<li><p><code class=\"docutils literal notranslate\">object_name</code>: modellens klassnamn</p></li>\n<li><p><code class=\"docutils literal notranslate\">namn</code>: modellens namn i plural</p></li>\n<li><p><code class=\"docutils literal notranslate\">perms</code>: ett <code class=\"docutils literal notranslate\">dict</code> som spårar <code class=\"docutils literal notranslate\">add</code>, <code class=\"docutils literal notranslate\">change</code>, <code class=\"docutils literal notranslate\">delete</code> och <code class=\"docutils literal notranslate\">view</code>-behörigheter</p></li>\n<li><p><code class=\"docutils literal notranslate\">admin_url</code>: URL för modellens ändringslista för administratörer</p></li>\n<li><p><code class=\"docutils literal notranslate\">add_url</code>: administratörs-URL för att lägga till en ny modellinstans</p></li>\n</ul>\n<p>Listor över applikationer och modeller sorteras alfabetiskt efter deras namn. Du kan åsidosätta den här metoden för att ändra standardordningen på adminindexsidan.</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\">AdminSite.</span><span class=\"sig-name descname\">has_permission</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</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>Returnerar <code class=\"docutils literal notranslate\">True</code> om användaren för den givna <code class=\"docutils literal notranslate\">HttpRequest</code> har behörighet att visa minst en sida på adminsidan. Standardinställningen är att både <a class=\"reference internal\" href=\"/sv/6.1/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\">User.is_active</code></a> och <a class=\"reference internal\" href=\"/sv/6.1/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\">User.is_staff</code></a> måste vara <code class=\"docutils literal notranslate\">True</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\">AdminSite.</span><span class=\"sig-name descname\">register</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">model_or_iterable</em>, <em class=\"sig-param\">admin_class<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</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>Registrerar den angivna modellklassen (eller iterabeln av klasser) med den angivna <code class=\"docutils literal notranslate\">admin_class</code>. <code class=\"docutils literal notranslate\">admin_class</code> är som standard <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\">ModelAdmin</code></a> (standardadministratörsalternativ). Om nyckelordsargument ges - t.ex. <code class=\"docutils literal notranslate\">list_display</code> - kommer de att tillämpas som alternativ för adminklassen.</p>\n<p>Ger upphov till <a class=\"reference internal\" href=\"/sv/6.1/ref/exceptions/#django.core.exceptions.ImproperlyConfigured\" title=\"django.core.exceptions.ImproperlyConfigured\"><code class=\"xref py py-class docutils literal notranslate\">ImproperlyConfigured</code></a> om en modell är abstrakt, och <code class=\"docutils literal notranslate\">django.contrib.admin.exceptions.AlreadyRegistered</code> om en modell redan är registrerad.</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\">AdminSite.</span><span class=\"sig-name descname\">unregister</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">model_or_iterable</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>Avregistrerar den angivna modellklassen (eller en iterabel av klasser).</p>\n<p>Utlöser <code class=\"docutils literal notranslate\">django.contrib.admin.exceptions.NotRegistered</code> om en modell inte redan är registrerad.</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\">AdminSite.</span><span class=\"sig-name descname\">get_model_admin</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">model</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>Returnerar en adminklass för den angivna modellklassen. Utlöser <code class=\"docutils literal notranslate\">django.contrib.admin.exceptions.NotRegistered</code> om en modell inte är registrerad.</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\">AdminSite.</span><span class=\"sig-name descname\">get_log_entries</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</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>Returnerar en frågeuppsättning för de relaterade <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\">LogEntry</code></a>-instanser som visas på webbplatsens indexsida. Denna metod kan åsidosättas för att filtrera loggposterna efter andra kriterier.</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>Koppla in <code class=\"docutils literal notranslate\">AdminSite</code>-instanser i din URLconf<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>Det sista steget när Django-admin konfigureras är att koppla instansen av <code class=\"docutils literal notranslate\">AdminSite</code> till din URLconf. Gör detta genom att peka en angiven URL på metoden <code class=\"docutils literal notranslate\">AdminSite.urls</code>. Det är inte nödvändigt att använda <a class=\"reference internal\" href=\"/sv/6.1/ref/urls/#django.urls.include\" title=\"django.urls.include\"><code class=\"xref py py-func docutils literal notranslate\">include()</code></a>.</p>\n<p>I det här exemplet registrerar vi standardinstansen <code class=\"docutils literal notranslate\">AdminSite</code> <code class=\"docutils literal notranslate\">django.contrib.admin.site</code> på webbadressen <code class=\"docutils literal notranslate\">/admin/</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n<span class=\"kn\">from</span> <span class=\"nn\">django.urls</span> <span class=\"kn\">import</span> path\n\nurlpatterns <span class=\"o\">=</span> <span class=\"p\">[</span>\n    path<span class=\"p\">(</span><span class=\"s2\">&quot;admin/&quot;</span><span class=\"p\">,</span> admin<span class=\"o\">.</span>site<span class=\"o\">.</span>urls<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>Anpassning av <code class=\"xref py py-class docutils literal notranslate\">AdminSite</code>-klassen<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>Om du vill skapa din egen administratörssajt med anpassat beteende kan du underklassa <code class=\"docutils literal notranslate\">AdminSite</code> och åsidosätta eller lägga till vad du vill. Skapa sedan en instans av din <code class=\"docutils literal notranslate\">AdminSite</code>-underklass (på samma sätt som du instansierar vilken annan Python-klass som helst) och registrera dina modeller och <code class=\"docutils literal notranslate\">ModelAdmin</code>-underklasser med den istället för med standardwebbplatsen. Uppdatera slutligen <code class=\"file docutils literal notranslate\">myproject/urls.py</code> för att referera till din <a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite\" title=\"django.contrib.admin.AdminSite\"><code class=\"xref py py-class docutils literal notranslate\">AdminSite</code></a>-underklass.</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\">myapp/admin.py</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n\n<span class=\"kn\">from</span> <span class=\"nn\">.models</span> <span class=\"kn\">import</span> MyModel\n\n\n<span class=\"k\">class</span> <span class=\"nc\">MyAdminSite</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>AdminSite<span class=\"p\">):</span>\n    site_header <span class=\"o\">=</span> <span class=\"s2\">&quot;Monty Python administration&quot;</span>\n\n\nadmin_site <span class=\"o\">=</span> MyAdminSite<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;myadmin&quot;</span><span class=\"p\">)</span>\nadmin_site<span class=\"o\">.</span>register<span class=\"p\">(</span>MyModel<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\">myproject/urls.py</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=\"nn\">django.urls</span> <span class=\"kn\">import</span> path\n\n<span class=\"kn\">from</span> <span class=\"nn\">myapp.admin</span> <span class=\"kn\">import</span> admin_site\n\nurlpatterns <span class=\"o\">=</span> <span class=\"p\">[</span>\n    path<span class=\"p\">(</span><span class=\"s2\">&quot;myadmin/&quot;</span><span class=\"p\">,</span> admin_site<span class=\"o\">.</span>urls<span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></figure>\n<p>Observera att du kanske inte vill ha autodiscovery av <code class=\"docutils literal notranslate\">admin</code>-moduler när du använder din egen <code class=\"docutils literal notranslate\">AdminSite</code>-instans eftersom du troligen kommer att importera alla <code class=\"docutils literal notranslate\">admin</code>-moduler per app i din <code class=\"docutils literal notranslate\">myproject.admin</code>-modul. Detta innebär att du måste sätta <code class=\"docutils literal notranslate\">'django.contrib.admin.apps.SimpleAdminConfig'</code> istället för <code class=\"docutils literal notranslate\">'django.contrib.admin'</code> i din <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a> inställning.</p>\n</section>\n<section id=\"overriding-the-default-admin-site\">\n<span id=\"overriding-default-admin-site\"></span><h3>Åsidosätta standardwebbplatsen för administratörer<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>Du kan åsidosätta standard <code class=\"docutils literal notranslate\">django.contrib.admin.site</code> genom att ställa in attributet <code class=\"xref py py-attr docutils literal notranslate\">default_site`</code> i en anpassad <code class=\"docutils literal notranslate\">AppConfig</code> till den prickade importsökvägen för antingen en <code class=\"docutils literal notranslate\">AdminSite</code>-underklass eller en anropbar som returnerar en webbplatsinstans.</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\">myproject/admin.py</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n\n\n<span class=\"k\">class</span> <span class=\"nc\">MyAdminSite</span><span class=\"p\">(</span>admin<span class=\"o\">.</span>AdminSite<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\">myproject/apps.py</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=\"nn\">django.contrib.admin.apps</span> <span class=\"kn\">import</span> AdminConfig\n\n\n<span class=\"k\">class</span> <span class=\"nc\">MyAdminConfig</span><span class=\"p\">(</span>AdminConfig<span class=\"p\">):</span>\n    default_site <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\">myproject/settings.py</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>INSTALLED_APPS <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>Flera administratörswebbplatser i samma URLconf<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>Du kan skapa flera instanser av adminwebbplatsen på samma Django-drivna webbplats. Skapa flera instanser av <code class=\"docutils literal notranslate\">AdminSite</code> och placera var och en på en annan URL.</p>\n<p>I det här exemplet innehåller webbadresserna <code class=\"docutils literal notranslate\">/basic-admin/</code> och <code class=\"docutils literal notranslate\">/advanced-admin/</code> separata versioner av administratörswebbplatsen - med <code class=\"docutils literal notranslate\">AdminSite</code>-instanserna <code class=\"docutils literal notranslate\">myproject.admin.basic_site</code> respektive <code class=\"docutils literal notranslate\">myproject.admin.advanced_site</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=\"nn\">django.urls</span> <span class=\"kn\">import</span> path\n<span class=\"kn\">from</span> <span class=\"nn\">myproject.admin</span> <span class=\"kn\">import</span> advanced_site<span class=\"p\">,</span> basic_site\n\nurlpatterns <span class=\"o\">=</span> <span class=\"p\">[</span>\n    path<span class=\"p\">(</span><span class=\"s2\">&quot;basic-admin/&quot;</span><span class=\"p\">,</span> basic_site<span class=\"o\">.</span>urls<span class=\"p\">),</span>\n    path<span class=\"p\">(</span><span class=\"s2\">&quot;advanced-admin/&quot;</span><span class=\"p\">,</span> advanced_site<span class=\"o\">.</span>urls<span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">AdminSite</code> instanser tar ett enda argument till sin konstruktör, deras namn, som kan vara vad du vill. Detta argument blir prefixet till URL-namnen i syfte att <a class=\"reference internal\" href=\"#admin-reverse-urls\"><span class=\"std std-ref\">reversera dem</span></a>. Detta är endast nödvändigt om du använder mer än en <code class=\"docutils literal notranslate\">AdminSite</code>.</p>\n</section>\n<section id=\"adding-views-to-admin-sites\">\n<h3>Lägga till vyer på administratörssidor<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>Precis som <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\">ModelAdmin</code></a> tillhandahåller <a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite\" title=\"django.contrib.admin.AdminSite\"><code class=\"xref py py-class docutils literal notranslate\">AdminSite</code></a> en metod <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.get_urls\" title=\"django.contrib.admin.ModelAdmin.get_urls\"><code class=\"xref py py-meth docutils literal notranslate\">get_urls()</code></a> som kan åsidosättas för att definiera ytterligare vyer för webbplatsen. För att lägga till en ny vy på din adminwebbplats utökar du basmetoden <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin.get_urls\" title=\"django.contrib.admin.ModelAdmin.get_urls\"><code class=\"xref py py-meth docutils literal notranslate\">get_urls()</code></a> så att den innehåller ett mönster för den nya vyn.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Alla vyer du renderar som använder admin-mallarna, eller utökar bas-admin-mallen, bör ställa in <code class=\"docutils literal notranslate\">request.current_app</code> innan du renderar mallen. Den bör sättas till antingen <code class=\"docutils literal notranslate\">self.name</code> om din vy är på en <code class=\"docutils literal notranslate\">AdminSite</code> eller <code class=\"docutils literal notranslate\">self.admin_site.name</code> om din vy är på en <code class=\"docutils literal notranslate\">ModelAdmin</code>.</p>\n</aside>\n</section>\n<section id=\"adding-a-password-reset-feature\">\n<span id=\"auth-password-reset\"></span><h3>Lägga till en funktion för återställning av lösenord<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>Du kan lägga till en funktion för återställning av lösenord på adminwebbplatsen genom att lägga till några rader i URLconf. Lägg särskilt till dessa fyra mönster:</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=\"nn\">django.contrib</span> <span class=\"kn\">import</span> admin\n<span class=\"kn\">from</span> <span class=\"nn\">django.contrib.auth</span> <span class=\"kn\">import</span> views <span class=\"k\">as</span> auth_views\n\npath<span class=\"p\">(</span>\n    <span class=\"s2\">&quot;admin/password_reset/&quot;</span><span class=\"p\">,</span>\n    auth_views<span class=\"o\">.</span>PasswordResetView<span class=\"o\">.</span>as_view<span class=\"p\">(</span>\n        extra_context<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;site_header&quot;</span><span class=\"p\">:</span> admin<span class=\"o\">.</span>site<span class=\"o\">.</span>site_header<span class=\"p\">}</span>\n    <span class=\"p\">),</span>\n    name<span class=\"o\">=</span><span class=\"s2\">&quot;admin_password_reset&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">),</span>\npath<span class=\"p\">(</span>\n    <span class=\"s2\">&quot;admin/password_reset/done/&quot;</span><span class=\"p\">,</span>\n    auth_views<span class=\"o\">.</span>PasswordResetDoneView<span class=\"o\">.</span>as_view<span class=\"p\">(</span>\n        extra_context<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;site_header&quot;</span><span class=\"p\">:</span> admin<span class=\"o\">.</span>site<span class=\"o\">.</span>site_header<span class=\"p\">}</span>\n    <span class=\"p\">),</span>\n    name<span class=\"o\">=</span><span class=\"s2\">&quot;password_reset_done&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">),</span>\npath<span class=\"p\">(</span>\n    <span class=\"s2\">&quot;reset/&lt;uidb64&gt;/&lt;token&gt;/&quot;</span><span class=\"p\">,</span>\n    auth_views<span class=\"o\">.</span>PasswordResetConfirmView<span class=\"o\">.</span>as_view<span class=\"p\">(</span>\n        extra_context<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;site_header&quot;</span><span class=\"p\">:</span> admin<span class=\"o\">.</span>site<span class=\"o\">.</span>site_header<span class=\"p\">}</span>\n    <span class=\"p\">),</span>\n    name<span class=\"o\">=</span><span class=\"s2\">&quot;password_reset_confirm&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">),</span>\npath<span class=\"p\">(</span>\n    <span class=\"s2\">&quot;reset/done/&quot;</span><span class=\"p\">,</span>\n    auth_views<span class=\"o\">.</span>PasswordResetCompleteView<span class=\"o\">.</span>as_view<span class=\"p\">(</span>\n        extra_context<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;site_header&quot;</span><span class=\"p\">:</span> admin<span class=\"o\">.</span>site<span class=\"o\">.</span>site_header<span class=\"p\">}</span>\n    <span class=\"p\">),</span>\n    name<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>(Detta förutsätter att du har lagt till administratören på <code class=\"docutils literal notranslate\">admin/</code> och kräver att du lägger till de webbadresser som börjar med <code class=\"docutils literal notranslate\">^admin/</code> före raden som innehåller själva admin-appen).</p>\n<p>Närvaron av den namngivna URL:en <code class=\"docutils literal notranslate\">admin_password_reset</code> kommer att leda till att en länk ”har du glömt ditt lösenord?” visas på standardinloggningssidan för administratörer under lösenordsrutan.</p>\n</section>\n</section>\n<section id=\"logentry-objects\">\n<h2>objekt av typen <code class=\"docutils literal notranslate\">LogEntry</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\">class</span> </em><span class=\"sig-prename descclassname\">models.</span><span class=\"sig-name descname\">LogEntry</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>Klassen <code class=\"docutils literal notranslate\">LogEntry</code> spårar tillägg, ändringar och borttagningar av objekt som görs via administratörsgränssnittet.</p>\n</dd></dl>\n\n<section id=\"logentry-attributes\">\n<h3><code class=\"docutils literal notranslate\">LogEntry</code> attribut<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\">LogEntry.</span><span class=\"sig-name descname\">action_time</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>Datum och tid för åtgärden.</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\">LogEntry.</span><span class=\"sig-name descname\">user</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>Den användare (en instans av <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-AUTH_USER_MODEL\"><code class=\"xref std std-setting docutils literal notranslate\">AUTH_USER_MODEL</code></a>) som utförde åtgärden.</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\">LogEntry.</span><span class=\"sig-name descname\">content_type</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>Det modifierade objektets <a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/contenttypes/#django.contrib.contenttypes.models.ContentType\" title=\"django.contrib.contenttypes.models.ContentType\"><code class=\"xref py py-class docutils literal notranslate\">ContentType</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\">LogEntry.</span><span class=\"sig-name descname\">object_id</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>Den textuella representationen av det modifierade objektets primärnyckel.</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\">LogEntry.</span><span class=\"sig-name descname\">object_repr</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>Objektets <code class=\"docutils literal notranslate\">repr()</code> efter modifieringen.</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\">LogEntry.</span><span class=\"sig-name descname\">action_flag</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>Typ av åtgärd som loggas: <code class=\"docutils literal notranslate\">TILLÄGG</code>, <code class=\"docutils literal notranslate\">ÄNDRING</code>, <code class=\"docutils literal notranslate\">RADERING</code>.</p>\n<p>Om du t.ex. vill få en lista över alla tillägg som gjorts via 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=\"nn\">django.contrib.admin.models</span> <span class=\"kn\">import</span> ADDITION<span class=\"p\">,</span> LogEntry\n\nLogEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>action_flag<span class=\"o\">=</span>ADDITION<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\">LogEntry.</span><span class=\"sig-name descname\">change_message</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>En detaljerad beskrivning av ändringen. I fallet med en redigering innehåller meddelandet till exempel en lista över de redigerade fälten. Django-adminsidan formaterar detta innehåll som en JSON-struktur, så att <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\">get_change_message()</code></a> kan komponera ett meddelande som översätts till det aktuella användarspråket. Anpassad kod kan dock ställa in detta som en vanlig sträng. Du rekommenderas att använda metoden <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\">get_change_message()</code></a> för att hämta detta värde istället för att komma åt det direkt.</p>\n</dd></dl>\n\n</section>\n<section id=\"logentry-methods\">\n<h3>metoder för <code class=\"docutils literal notranslate\">LogEntry</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\">LogEntry.</span><span class=\"sig-name descname\">get_edited_object</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>En genväg som returnerar det refererade objektet.</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\">LogEntry.</span><span class=\"sig-name descname\">get_change_message</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>Formaterar och översätter <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\">change_message</code></a> till det aktuella användarspråket. Meddelanden som skapats före Django 1.10 kommer alltid att visas på det språk som de loggades på.</p>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"reversing-admin-urls\">\n<span id=\"admin-reverse-urls\"></span><h2>Omvända administratörsadresser<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>När en <a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite\" title=\"django.contrib.admin.AdminSite\"><code class=\"xref py py-class docutils literal notranslate\">AdminSite</code></a> distribueras, är de vyer som tillhandahålls av den webbplatsen tillgängliga med Djangos <a class=\"reference internal\" href=\"/sv/6.1/topics/http/urls/#naming-url-patterns\"><span class=\"std std-ref\">URL reversing system</span></a>.</p>\n<p>Klassen <a class=\"reference internal\" href=\"#django.contrib.admin.AdminSite\" title=\"django.contrib.admin.AdminSite\"><code class=\"xref py py-class docutils literal notranslate\">AdminSite</code></a> tillhandahåller följande namngivna URL-mönster:</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>Sida</p></th>\n<th class=\"head\"><p>URL-namn</p></th>\n<th class=\"head\"><p>Parametrar</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p>Index</p></td>\n<td><p><code class=\"docutils literal notranslate\">index</code></p></td>\n<td></td>\n</tr>\n<tr class=\"row-odd\"><td><p>Logga in</p></td>\n<td><p><code class=\"docutils literal notranslate\">login</code></p></td>\n<td></td>\n</tr>\n<tr class=\"row-even\"><td><p>Logga ut</p></td>\n<td><p><code class=\"docutils literal notranslate\">logout</code></p></td>\n<td></td>\n</tr>\n<tr class=\"row-odd\"><td><p>Ändra lösenord</p></td>\n<td><p><code class=\"docutils literal notranslate\">lösenord_ändring</code></p></td>\n<td></td>\n</tr>\n<tr class=\"row-even\"><td><p>Lösenordsändring genomförd</p></td>\n<td><p><code class=\"docutils literal notranslate\">lösenord_byte_gjort</code></p></td>\n<td></td>\n</tr>\n<tr class=\"row-odd\"><td><p>i18n JavaScript</p></td>\n<td><p><code class=\"docutils literal notranslate\">jsi18n</code></p></td>\n<td></td>\n</tr>\n<tr class=\"row-even\"><td><p>Applikationens indexsida</p></td>\n<td><p><code class=\"docutils literal notranslate\">app_lista</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">app_label</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p>Omdirigera till objektets sida</p></td>\n<td><p><code class=\"docutils literal notranslate\">Visa_på_sajten</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">content_type_id</code>, <code class=\"docutils literal notranslate\">object_id</code></p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>Varje <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\">ModelAdmin</code></a>-instans tillhandahåller ytterligare en uppsättning namngivna URL:er:</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>Sida</p></th>\n<th class=\"head\"><p>URL-namn</p></th>\n<th class=\"head\"><p>Parametrar</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p>Changelist</p></td>\n<td><p><code class=\"docutils literal notranslate\">{{ app_label }}_{{ model_name }}_changelist</code></p></td>\n<td></td>\n</tr>\n<tr class=\"row-odd\"><td><p>Lägg till</p></td>\n<td><p><code class=\"docutils literal notranslate\">{{app_label }}_{{modellnamn }}_add</code></p></td>\n<td></td>\n</tr>\n<tr class=\"row-even\"><td><p>Historik</p></td>\n<td><p><code class=\"docutils literal notranslate\">{{ app_label }}_{{ model_name }}_history</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">objekt_id</code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p>Radera</p></td>\n<td><p><code class=\"docutils literal notranslate\">{{app_label }}_{{modellnamn }}_delete</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">objekt_id</code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p>Ändra</p></td>\n<td><p><code class=\"docutils literal notranslate\">{{app_label }}_{{modellnamn }}_change</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">objekt_id</code></p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>I <code class=\"docutils literal notranslate\">UserAdmin</code> finns en namngiven 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>Sida</p></th>\n<th class=\"head\"><p>URL-namn</p></th>\n<th class=\"head\"><p>Parametrar</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p>Ändra lösenord</p></td>\n<td><p><code class=\"docutils literal notranslate\">auth_user_password_change</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">användar_id</code></p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>Dessa namngivna webbadresser registreras med applikationsnamnområdet <code class=\"docutils literal notranslate\">admin</code> och med ett instansnamnområde som motsvarar namnet på Site-instansen.</p>\n<p>Så - om du vill få en referens till Change-vyn för ett visst <code class=\"docutils literal notranslate\">Choice</code>-objekt (från polls-programmet) i standardadministratören, skulle du ringa:</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=\"nn\">django.urls</span> <span class=\"kn\">import</span> reverse\n<span class=\"gp\">&gt;&gt;&gt; </span>c <span class=\"o\">=</span> Choice<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"o\">...</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>change_url <span class=\"o\">=</span> reverse<span class=\"p\">(</span><span class=\"s2\">&quot;admin:polls_choice_change&quot;</span><span class=\"p\">,</span> args<span class=\"o\">=</span><span class=\"p\">(</span>c<span class=\"o\">.</span>id<span class=\"p\">,))</span>\n</code></pre></div>\n<p>Detta kommer att hitta den första registrerade instansen av admin-applikationen (oavsett instansens namn), och lösa till vyn för att ändra <code class=\"docutils literal notranslate\">poll.Choice</code>-instanser i den instansen.</p>\n<p>Om du vill hitta en URL i en specifik administratörsinstans anger du namnet på den instansen som en <code class=\"docutils literal notranslate\">current_app</code>-hint till det omvända anropet. Om du till exempel specifikt ville ha adminvyn från admininstansen med namnet <code class=\"docutils literal notranslate\">custom</code>, skulle du behöva anropa:</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>change_url <span class=\"o\">=</span> reverse<span class=\"p\">(</span><span class=\"s2\">&quot;admin:polls_choice_change&quot;</span><span class=\"p\">,</span> args<span class=\"o\">=</span><span class=\"p\">(</span>c<span class=\"o\">.</span>id<span class=\"p\">,),</span> current_app<span class=\"o\">=</span><span class=\"s2\">&quot;custom&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Mer information finns i dokumentationen om <a class=\"reference internal\" href=\"/sv/6.1/topics/http/urls/#topics-http-reversing-url-namespaces\"><span class=\"std std-ref\">reversing namespaced URLs</span></a>.</p>\n<p>För att göra det lättare att vända på admin-webbadresser i mallar tillhandahåller Django ett filter <code class=\"docutils literal notranslate\">admin_urlname</code> som tar en åtgärd som argument:</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>Åtgärden i exemplen ovan matchar den sista delen av URL-namnen för <a class=\"reference internal\" href=\"#django.contrib.admin.ModelAdmin\" title=\"django.contrib.admin.ModelAdmin\"><code class=\"xref py py-class docutils literal notranslate\">ModelAdmin</code></a>-instanser som beskrivs ovan. Variabeln <code class=\"docutils literal notranslate\">opts</code> kan vara vilket objekt som helst som har attributen <code class=\"docutils literal notranslate\">app_label</code> och <code class=\"docutils literal notranslate\">model_name</code> och som vanligtvis tillhandahålls av adminvyerna för den aktuella modellen.</p>\n</section>\n<section id=\"the-display-decorator\">\n<h2>Dekorationselementet <code class=\"docutils literal notranslate\">display</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\">display</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"keyword-only-separator o\"><abbr title=\"Keyword-only parameters separator (PEP 3102)\">*</abbr></span></em>, <em class=\"sig-param\">boolean<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">ordering<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">description<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">empty_value<span class=\"o\">=</span><span class=\"default_value\">None</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>Denna dekorator kan användas för att ställa in specifika attribut på anpassade visningsfunktioner som kan användas med <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\">list_display</code></a> eller <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\">readonly_fields</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>display<span class=\"p\">(</span>\n    boolean<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span>\n    ordering<span class=\"o\">=</span><span class=\"s2\">&quot;-publish_date&quot;</span><span class=\"p\">,</span>\n    description<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=\"nf\">is_published</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> obj<span class=\"p\">):</span>\n    <span class=\"k\">return</span> obj<span class=\"o\">.</span>publish_date <span class=\"ow\">is</span> <span class=\"ow\">not</span> <span class=\"kc\">None</span>\n</code></pre></div>\n<p>Detta motsvarar att ange vissa attribut (med de ursprungliga, längre namnen) på funktionen direkt:</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=\"nf\">is_published</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> obj<span class=\"p\">):</span>\n    <span class=\"k\">return</span> obj<span class=\"o\">.</span>publish_date <span class=\"ow\">is</span> <span class=\"ow\">not</span> <span class=\"kc\">None</span>\n\n\nis_published<span class=\"o\">.</span>boolean <span class=\"o\">=</span> <span class=\"kc\">True</span>\nis_published<span class=\"o\">.</span>admin_order_field <span class=\"o\">=</span> <span class=\"s2\">&quot;-publish_date&quot;</span>\nis_published<span class=\"o\">.</span>short_description <span class=\"o\">=</span> <span class=\"s2\">&quot;Is Published?&quot;</span>\n</code></pre></div>\n<p>Observera också att dekoratorparametern <code class=\"docutils literal notranslate\">empty_value</code> mappar till attributet <code class=\"docutils literal notranslate\">empty_value_display</code> som tilldelas direkt till funktionen. Den kan inte användas tillsammans med <code class=\"docutils literal notranslate\">boolean</code> - de är ömsesidigt uteslutande.</p>\n<p>Det är inte obligatoriskt att använda denna dekorator för att skapa en displayfunktion, men det kan vara användbart att använda den utan argument som en markör i källan för att identifiera syftet med funktionen:</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>display\n<span class=\"k\">def</span> <span class=\"nf\">published_year</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> obj<span class=\"p\">):</span>\n    <span class=\"k\">return</span> obj<span class=\"o\">.</span>publish_date<span class=\"o\">.</span>year\n</code></pre></div>\n<p>I detta fall kommer det inte att lägga till några attribut till funktionen.</p>\n</dd></dl>\n\n</section>\n<section id=\"the-staff-member-required-decorator\">\n<h2>Dekoratorn <code class=\"docutils literal notranslate\">staff_member_required</code> (personalmedlem krävs)<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\">staff_member_required</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">redirect_field_name<span class=\"o\">=</span><span class=\"default_value\">'next'</span></em>, <em class=\"sig-param\">login_url<span class=\"o\">=</span><span class=\"default_value\">'admin:login'</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>Denna dekorator används på de adminvyer som kräver auktorisering. En vy som är dekorerad med denna funktion kommer att ha följande beteende:</p>\n<ul class=\"simple\">\n<li><p>Om användaren är inloggad, tillhör personalen (<code class=\"docutils literal notranslate\">User.is_staff=True</code>) och är aktiv (<code class=\"docutils literal notranslate\">User.is_active=True</code>), körs vyn normalt.</p></li>\n<li><p>Annars omdirigeras begäran till den URL som anges av parametern <code class=\"docutils literal notranslate\">login_url</code>, med den ursprungligen begärda sökvägen i en frågesträngvariabel som anges av <code class=\"docutils literal notranslate\">redirect_field_name</code>. Till exempel: <code class=\"docutils literal notranslate\">/admin/login/?next=/admin/polls/question/3/</code>.</p></li>\n</ul>\n<p>Exempel på användning:</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=\"nn\">django.contrib.admin.views.decorators</span> <span class=\"kn\">import</span> staff_member_required\n\n\n<span class=\"nd\">@staff_member_required</span>\n<span class=\"k\">def</span> <span class=\"nf\">my_view</span><span class=\"p\">(</span>request<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":"Översikt","anchor":"overview","children":[{"title":"Övriga ämnen","anchor":"other-topics","children":[]}]},{"title":"ModelAdmin-objekt","anchor":"modeladmin-objects","children":[{"title":"Dekoratorn ”register","anchor":"the-register-decorator","children":[]},{"title":"Upptäckt av adminfiler","anchor":"discovery-of-admin-files","children":[]},{"title":"ModelAdmin alternativ","anchor":"modeladmin-options","children":[{"title":"Anpassade mallalternativ","anchor":"custom-template-options","children":[]}]},{"title":"metoder för ModelAdmin","anchor":"modeladmin-methods","children":[{"title":"Andra metoder","anchor":"other-methods","children":[]}]},{"title":"ModelAdmin tillgångsdefinitioner","anchor":"modeladmin-asset-definitions","children":[{"title":"jQuery","anchor":"jquery","children":[]}]}]},{"title":"objekt av typen ``InlineModelAdmin","anchor":"inlinemodeladmin-objects","children":[{"title":"InlineModelAdmin alternativ","anchor":"inlinemodeladmin-options","children":[]},{"title":"Arbeta med en modell med två eller flera främmande nycklar till samma överordnade modell","anchor":"working-with-a-model-with-two-or-more-foreign-keys-to-the-same-parent-model","children":[]},{"title":"Arbeta med många-till-många-modeller","anchor":"working-with-many-to-many-models","children":[]},{"title":"Arbeta med många-till-manga förmedlingsmodeller","anchor":"working-with-many-to-many-intermediary-models","children":[]},{"title":"Använda generiska relationer som en inline","anchor":"using-generic-relations-as-an-inline","children":[]}]},{"title":"Lägga till anpassad validering i admin","anchor":"adding-custom-validation-to-the-admin","children":[]},{"title":"Åsidosätta adminmallar","anchor":"overriding-admin-templates","children":[{"title":"Konfigurera projektets kataloger för adminmallar","anchor":"set-up-your-project-s-admin-template-directories","children":[]},{"title":"Åsidosätta eller ersätta en administratörsmall","anchor":"overriding-vs-replacing-an-admin-template","children":[]},{"title":"Mallar som kan åsidosättas per app eller modell","anchor":"templates-which-may-be-overridden-per-app-or-model","children":[]},{"title":"Rot- och inloggningsmallar","anchor":"root-and-login-templates","children":[]}]},{"title":"Stöd för tematisering","anchor":"theming-support","children":[]},{"title":"extrabody-block","anchor":"extrabody-block","children":[]},{"title":"objekt av typen AdminSite","anchor":"adminsite-objects","children":[{"title":"attribut för AdminSite","anchor":"adminsite-attributes","children":[]},{"title":"metoder för AdminSite","anchor":"adminsite-methods","children":[]},{"title":"Koppla in AdminSite-instanser i din URLconf","anchor":"hooking-adminsite-instances-into-your-urlconf","children":[]},{"title":"Anpassning av AdminSite-klassen","anchor":"customizing-the-adminsite-class","children":[]},{"title":"Åsidosätta standardwebbplatsen för administratörer","anchor":"overriding-the-default-admin-site","children":[]},{"title":"Flera administratörswebbplatser i samma URLconf","anchor":"multiple-admin-sites-in-the-same-urlconf","children":[]},{"title":"Lägga till vyer på administratörssidor","anchor":"adding-views-to-admin-sites","children":[]},{"title":"Lägga till en funktion för återställning av lösenord","anchor":"adding-a-password-reset-feature","children":[]}]},{"title":"objekt av typen LogEntry","anchor":"logentry-objects","children":[{"title":"LogEntry attribut","anchor":"logentry-attributes","children":[]},{"title":"metoder för LogEntry","anchor":"logentry-methods","children":[]}]},{"title":"Omvända administratörsadresser","anchor":"reversing-admin-urls","children":[]},{"title":"Dekorationselementet display","anchor":"the-display-decorator","children":[]},{"title":"Dekoratorn staff_member_required (personalmedlem krävs)","anchor":"the-staff-member-required-decorator","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"API-referens","url":"/sv/6.1/ref/"},{"docname":"ref/contrib/index","title":"contrib paket","url":"/sv/6.1/ref/contrib/"}],"prev":{"docname":"ref/contrib/index","title":"contrib paket","url":"/sv/6.1/ref/contrib/"},"next":{"docname":"ref/contrib/admin/actions","title":"Administrativa åtgärder","url":"/sv/6.1/ref/contrib/admin/actions/"},"formats":{"html":"/sv/6.1/ref/contrib/admin/","markdown":"/sv/6.1/ref/contrib/admin.md","json":"/sv/6.1/ref/contrib/admin.json"},"source":"https://github.com/django/django/blob/stable/6.1.x/docs/ref/contrib/admin/index.txt","official":"https://docs.djangoproject.com/sv/6.1/ref/contrib/admin/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}