{"title":"Applikationer","version":"6.1","locale":"sv","docname":"ref/applications","url":"/sv/6.1/ref/applications/","canonical":"https://djangodocs.dev/sv/6.1/ref/applications/","summary":"Django innehåller ett register över installerade applikationer som lagrar konfiguration och ger introspektion.","html":"<span id=\"applications\"></span><h1>Applikationer<a class=\"heading-anchor\" href=\"#module-django.apps\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Django innehåller ett register över installerade applikationer som lagrar konfiguration och ger introspektion. Det upprätthåller också en lista över tillgängliga <a class=\"reference internal\" href=\"/sv/6.1/topics/db/models/\"><span class=\"doc\">modeller</span></a>.</p>\n<p>Det här registret kallas <a class=\"reference internal\" href=\"#django.apps.apps\" title=\"django.apps.apps\"><code class=\"xref py py-attr docutils literal notranslate\">apps</code></a> och finns i <a class=\"reference internal\" href=\"#module-django.apps\" title=\"django.apps\"><code class=\"xref py py-mod docutils literal notranslate\">django.apps</code></a>:</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.apps</span> <span class=\"kn\">import</span> apps\n<span class=\"gp\">&gt;&gt;&gt; </span>apps<span class=\"o\">.</span>get_app_config<span class=\"p\">(</span><span class=\"s2\">&quot;admin&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>verbose_name\n<span class=\"go\">&#39;Administration&#39;</span>\n</code></pre></div>\n<section id=\"projects-and-applications\">\n<h2>Projekt och tillämpningar<a class=\"heading-anchor\" href=\"#projects-and-applications\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Termen <strong>projekt</strong> beskriver en Django webbapplikation. Projektets Python-paket definieras främst av en inställningsmodul, men det innehåller vanligtvis andra saker. Till exempel:, när du kör <code class=\"docutils literal notranslate\">django-admin startproject mysite</code> får du en <code class=\"docutils literal notranslate\">mysite</code> projektkatalog som innehåller ett <code class=\"docutils literal notranslate\">mysite</code> Python-paket med <code class=\"docutils literal notranslate\">settings.py</code>, <code class=\"docutils literal notranslate\">urls.py</code>, <code class=\"docutils literal notranslate\">asgi.py</code> och <code class=\"docutils literal notranslate\">wsgi.py</code>. Projektpaketet utökas ofta för att inkludera saker som fixturer, CSS och mallar som inte är knutna till en viss applikation.</p>\n<p>Ett <strong>projekts rotkatalog</strong> (den som innehåller <code class=\"docutils literal notranslate\">manage.py</code>) är vanligtvis behållaren för alla ett projekts applikationer som inte installeras separat.</p>\n<p>Termen <strong>applikation</strong> beskriver ett Python-paket som tillhandahåller en viss uppsättning funktioner. Applikationer <a class=\"reference internal\" href=\"/sv/6.1/intro/reusable-apps/\"><span class=\"doc\">kan återanvändas</span></a> i olika projekt.</p>\n<p>Applikationer innehåller en kombination av modeller, vyer, mallar, malltaggar, statiska filer, webbadresser, mellanprogram osv. De är i allmänhet kopplade till projekt med inställningen <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> och eventuellt med andra mekanismer som URLconfs, 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> eller mallarv.</p>\n<p>Det är viktigt att förstå att en Django-applikation är en uppsättning kod som interagerar med olika delar av ramverket. Det finns inget sådant som ett <code class=\"docutils literal notranslate\">Application</code>-objekt. Det finns dock några ställen där Django behöver interagera med installerade applikationer, främst för konfiguration och även för introspektion. Det är därför som applikationsregistret upprätthåller metadata i en <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a>-instans för varje installerad applikation.</p>\n<p>Det finns inga begränsningar för att ett projektpaket inte också kan betraktas som en applikation och ha modeller etc. (vilket skulle kräva att det läggs till i <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>).</p>\n</section>\n<section id=\"configuring-applications\">\n<span id=\"configuring-applications-ref\"></span><h2>Konfigurera applikationer<a class=\"heading-anchor\" href=\"#configuring-applications\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>För att konfigurera en applikation skapar du en <code class=\"docutils literal notranslate\">apps.py</code>-modul i applikationen och definierar sedan en subklass av <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a> där.</p>\n<p>När <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> innehåller den prickade sökvägen till en applikationsmodul, som standard, om Django hittar exakt en <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a> subklass i <code class=\"docutils literal notranslate\">apps.py</code> submodulen, använder den den konfigurationen för applikationen. Detta beteende kan inaktiveras genom att ställa in <a class=\"reference internal\" href=\"#django.apps.AppConfig.default\" title=\"django.apps.AppConfig.default\"><code class=\"xref py py-attr docutils literal notranslate\">AppConfig.default</code></a> till <code class=\"docutils literal notranslate\">False</code>.</p>\n<p>Om modulen <code class=\"docutils literal notranslate\">apps.py</code> innehåller mer än en <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a>-underklass, kommer Django att leta efter en enda där <a class=\"reference internal\" href=\"#django.apps.AppConfig.default\" title=\"django.apps.AppConfig.default\"><code class=\"xref py py-attr docutils literal notranslate\">AppConfig.default</code></a> är <code class=\"docutils literal notranslate\">True</code>.</p>\n<p>Om ingen underklass till <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a> hittas, kommer basklassen <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a> att användas.</p>\n<p>Alternativt kan <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> innehålla den prickade sökvägen till en konfigurationsklass för att ange den explicit:</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>INSTALLED_APPS <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"o\">...</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;polls.apps.PollsAppConfig&quot;</span><span class=\"p\">,</span>\n    <span class=\"o\">...</span><span class=\"p\">,</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<section id=\"for-application-authors\">\n<h3>För ansökningsförfattare<a class=\"heading-anchor\" href=\"#for-application-authors\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Om du skapar en pluggbar app som heter ”Rock ’n’ roll”, så här skulle du ge ett korrekt namn för administratören:</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\"># rock_n_roll/apps.py</span>\n\n<span class=\"kn\">from</span> <span class=\"nn\">django.apps</span> <span class=\"kn\">import</span> AppConfig\n\n\n<span class=\"k\">class</span> <span class=\"nc\">RockNRollConfig</span><span class=\"p\">(</span>AppConfig<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> <span class=\"s2\">&quot;rock_n_roll&quot;</span>\n    verbose_name <span class=\"o\">=</span> <span class=\"s2\">&quot;Rock ’n’ roll&quot;</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">RockNRollConfig</code> kommer att laddas automatiskt när <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> innehåller <code class=\"docutils literal notranslate\">'rock_n_roll'</code>. Om du vill förhindra detta, sätt <a class=\"reference internal\" href=\"#django.apps.AppConfig.default\" title=\"django.apps.AppConfig.default\"><code class=\"xref py py-attr docutils literal notranslate\">default</code></a> till <code class=\"docutils literal notranslate\">False</code> i klassdefinitionen.</p>\n<p>Du kan tillhandahålla flera <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a>-underklasser med olika beteenden. För att tala om för Django vilken som ska användas som standard, sätt <a class=\"reference internal\" href=\"#django.apps.AppConfig.default\" title=\"django.apps.AppConfig.default\"><code class=\"xref py py-attr docutils literal notranslate\">default</code></a> till <code class=\"docutils literal notranslate\">True</code> i dess definition. Om dina användare vill välja en icke-standardkonfiguration måste de ersätta <code class=\"docutils literal notranslate\">'rock_n_roll'</code> med den prickade sökvägen till den specifika klassen i sin <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<p>Attributet <a class=\"reference internal\" href=\"#django.apps.AppConfig.name\" title=\"django.apps.AppConfig.name\"><code class=\"xref py py-attr docutils literal notranslate\">AppConfig.name</code></a> talar om för Django vilken applikation denna konfiguration gäller för. Du kan definiera alla andra attribut som dokumenteras i <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a> API-referensen.</p>\n<p><a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a> underklasser kan definieras var som helst. Konventionen <code class=\"docutils literal notranslate\">apps.py</code> tillåter bara Django att ladda dem automatiskt när <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> innehåller sökvägen till en applikationsmodul snarare än sökvägen till en konfigurationsklass.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Om din kod importerar applikationsregistret i en applikations <code class=\"docutils literal notranslate\">__init__.py</code> kommer namnet <code class=\"docutils literal notranslate\">apps</code> att krocka med undermodulen <code class=\"docutils literal notranslate\">apps</code>. Den bästa metoden är att flytta koden till en undermodul och importera den. En lösning är att importera registret under ett annat namn:</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.apps</span> <span class=\"kn\">import</span> apps <span class=\"k\">as</span> django_apps\n</code></pre></div>\n</aside>\n</section>\n<section id=\"for-application-users\">\n<h3>För applikationsanvändare<a class=\"heading-anchor\" href=\"#for-application-users\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Om du använder ”Rock ’n’ roll” i ett projekt som heter <code class=\"docutils literal notranslate\">anthology</code>, men du vill att det ska visas som ”Jazz Manouche” istället, kan du ange din egen konfiguration:</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\"># anthology/apps.py</span>\n\n<span class=\"kn\">from</span> <span class=\"nn\">rock_n_roll.apps</span> <span class=\"kn\">import</span> RockNRollConfig\n\n\n<span class=\"k\">class</span> <span class=\"nc\">JazzManoucheConfig</span><span class=\"p\">(</span>RockNRollConfig<span class=\"p\">):</span>\n    verbose_name <span class=\"o\">=</span> <span class=\"s2\">&quot;Jazz Manouche&quot;</span>\n\n\n<span class=\"c1\"># anthology/settings.py</span>\n\nINSTALLED_APPS <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"s2\">&quot;anthology.apps.JazzManoucheConfig&quot;</span><span class=\"p\">,</span>\n    <span class=\"c1\"># ...</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Detta exempel visar projektspecifika konfigurationsklasser som finns i en undermodul som heter <code class=\"docutils literal notranslate\">apps.py</code>. Detta är en konvention, inte ett krav. <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a>-subklasser kan definieras var som helst.</p>\n<p>I den här situationen måste <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> innehålla den prickade sökvägen till konfigurationsklassen eftersom den ligger utanför ett program och därför inte kan upptäckas automatiskt.</p>\n</section>\n</section>\n<section id=\"application-configuration\">\n<h2>Konfiguration av applikation<a class=\"heading-anchor\" href=\"#application-configuration\"><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.apps.AppConfig\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">AppConfig</span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Applikationskonfigurationsobjekt lagrar metadata för en applikation. Vissa attribut kan konfigureras i <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a> subklasser. Andra ställs in av Django och är skrivskyddade.</p>\n</dd></dl>\n\n<section id=\"configurable-attributes\">\n<h3>Konfigurerbara attribut<a class=\"heading-anchor\" href=\"#configurable-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.apps.AppConfig.name\">\n<span class=\"sig-prename descclassname\">AppConfig.</span><span class=\"sig-name descname\">name</span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Fullständig Python-sökväg till applikationen, t.ex. <code class=\"docutils literal notranslate\">'django.contrib.admin'</code>.</p>\n<p>Detta attribut definierar vilken applikation som konfigurationen gäller för. Det måste anges i alla <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a>-subklasser.</p>\n<p>Den måste vara unik för hela Django-projektet.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.label\">\n<span class=\"sig-prename descclassname\">AppConfig.</span><span class=\"sig-name descname\">label</span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.label\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Kortnamn för applikationen, t.ex. <code class=\"docutils literal notranslate\">'admin'</code></p>\n<p>Detta attribut möjliggör ommärkning av en applikation när två applikationer har motstridiga etiketter. Standardvärdet är den sista komponenten i <code class=\"docutils literal notranslate\">name</code>. Det bör vara en giltig Python-identifierare.</p>\n<p>Den måste vara unik för hela Django-projektet.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>Om du ändrar det här attributet efter att migreringar har tillämpats för en applikation kommer det att leda till att ändringar i ett projekt eller, när det gäller en återanvändbar app, alla befintliga installationer av den appen bryts. Detta beror på att <code class=\"docutils literal notranslate\">AppConfig.label</code> används i databastabeller och migreringsfiler när en app refereras till i beroendelistan.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.verbose_name\">\n<span class=\"sig-prename descclassname\">AppConfig.</span><span class=\"sig-name descname\">verbose_name</span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.verbose_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ett mänskligt läsbart namn för applikationen, t.ex. ”Administration”.</p>\n<p>Standardvärdet för detta attribut är <code class=\"docutils literal notranslate\">label.title()</code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.path\">\n<span class=\"sig-prename descclassname\">AppConfig.</span><span class=\"sig-name descname\">path</span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.path\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Filsystemets sökväg till applikationskatalogen, t.ex. <code class=\"docutils literal notranslate\">'/usr/lib/pythonX.Y/dist-packages/django/contrib/admin'</code>.</p>\n<p>I de flesta fall kan Django automatiskt upptäcka och ställa in detta, men du kan också tillhandahålla en explicit åsidosättning som ett klassattribut på din <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a>-underklass. I några få situationer krävs detta; till exempel om app-paketet är ett <a class=\"reference internal\" href=\"#namespace-package\">namespace package</a> med flera sökvägar.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.default\">\n<span class=\"sig-prename descclassname\">AppConfig.</span><span class=\"sig-name descname\">default</span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.default\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Sätt detta attribut till <code class=\"docutils literal notranslate\">False</code> för att förhindra Django från att välja en konfigurationsklass automatiskt. Detta är användbart när <code class=\"docutils literal notranslate\">apps.py</code> bara definierar en <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a>-underklass men du inte vill att Django ska använda den som standard.</p>\n<p>Sätt detta attribut till <code class=\"docutils literal notranslate\">True</code> för att säga till Django att välja en konfigurationsklass automatiskt. Detta är användbart när <code class=\"docutils literal notranslate\">apps.py</code> definierar mer än en <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a>-underklass och du vill att Django ska använda en av dem som standard.</p>\n<p>Som standard är detta attribut inte inställt.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.default_auto_field\">\n<span class=\"sig-prename descclassname\">AppConfig.</span><span class=\"sig-name descname\">default_auto_field</span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.default_auto_field\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Den implicita primärnyckeltyp som ska läggas till i modeller inom den här applikationen.</p>\n<p>Återanvändbara applikationer som definierar modeller <strong>måste</strong> ange det här attributet för att säkerställa att migreringar som ingår i applikationen stämmer överens med modellerna. Annars genereras migreringar för applikationen när en användare kör <a class=\"reference internal\" href=\"/sv/6.1/ref/django-admin/#django-admin-makemigrations\"><code class=\"xref std std-djadmin docutils literal notranslate\">makemigrations</code></a> med ett annat <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-DEFAULT_AUTO_FIELD\"><code class=\"xref std std-setting docutils literal notranslate\">DEFAULT_AUTO_FIELD</code></a>, vilket kan hamna i konflikt med framtida migreringar som levereras med applikationen.</p>\n<p>Till exempel för att fortsätta använda <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.AutoField\" title=\"django.db.models.AutoField\"><code class=\"xref py py-class docutils literal notranslate\">AutoField</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>default_auto_field <span class=\"o\">=</span> <span class=\"s2\">&quot;django.db.models.AutoField&quot;</span>\n</code></pre></div>\n<p>Som standard är detta värdet för <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-DEFAULT_AUTO_FIELD\"><code class=\"xref std std-setting docutils literal notranslate\">DEFAULT_AUTO_FIELD</code></a>.</p>\n</dd></dl>\n\n</section>\n<section id=\"read-only-attributes\">\n<h3>Skrivskyddade attribut<a class=\"heading-anchor\" href=\"#read-only-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.apps.AppConfig.module\">\n<span class=\"sig-prename descclassname\">AppConfig.</span><span class=\"sig-name descname\">module</span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.module\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Rotmodul för applikationen, t.ex. <code class=\"docutils literal notranslate\">&lt;module 'django.contrib.admin' from 'django/contrib/admin/__init__.py'&gt;</code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.models_module\">\n<span class=\"sig-prename descclassname\">AppConfig.</span><span class=\"sig-name descname\">models_module</span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.models_module\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Modul som innehåller modellerna, t.ex. <code class=\"docutils literal notranslate\">&lt;module 'django.contrib.admin.models' from 'django/contrib/admin/models.py'&gt;</code>.</p>\n<p>Den kan vara <code class=\"docutils literal notranslate\">None</code> om applikationen inte innehåller en <code class=\"docutils literal notranslate\">models</code> modul. Observera att de databasrelaterade signalerna som <a class=\"reference internal\" href=\"/sv/6.1/ref/signals/#django.db.models.signals.pre_migrate\" title=\"django.db.models.signals.pre_migrate\"><code class=\"xref py py-data docutils literal notranslate\">pre_migrate</code></a> och <a class=\"reference internal\" href=\"/sv/6.1/ref/signals/#django.db.models.signals.post_migrate\" title=\"django.db.models.signals.post_migrate\"><code class=\"xref py py-data docutils literal notranslate\">post_migrate</code></a> endast sänds ut för applikationer som har en <code class=\"docutils literal notranslate\">models</code>-modul.</p>\n</dd></dl>\n\n</section>\n<section id=\"methods\">\n<h3>Metoder<a class=\"heading-anchor\" href=\"#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.apps.AppConfig.get_models\">\n<span class=\"sig-prename descclassname\">AppConfig.</span><span class=\"sig-name descname\">get_models</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">include_auto_created<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">include_swapped<span class=\"o\">=</span><span class=\"default_value\">False</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.get_models\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returnerar en iterabel av <a class=\"reference internal\" href=\"/sv/6.1/ref/models/instances/#django.db.models.Model\" title=\"django.db.models.Model\"><code class=\"xref py py-class docutils literal notranslate\">Model</code></a>-klasser för denna applikation.</p>\n<p>Kräver att appregistret är helt fyllt.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.get_model\">\n<span class=\"sig-prename descclassname\">AppConfig.</span><span class=\"sig-name descname\">get_model</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">model_name</em>, <em class=\"sig-param\">require_ready<span class=\"o\">=</span><span class=\"default_value\">True</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.get_model\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returnerar <a class=\"reference internal\" href=\"/sv/6.1/ref/models/instances/#django.db.models.Model\" title=\"django.db.models.Model\"><code class=\"xref py py-class docutils literal notranslate\">Model</code></a> med det angivna <code class=\"docutils literal notranslate\">model_name</code>. <code class=\"docutils literal notranslate\">model_name</code> är skiftlägesokänsligt.</p>\n<p>Utlöser <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#LookupError\" title=\"(in Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\">LookupError</code></a> om ingen sådan modell finns i denna applikation.</p>\n<p>Kräver att applikationsregistret är fullständigt ifyllt, såvida inte argumentet <code class=\"docutils literal notranslate\">require_ready</code> är <code class=\"docutils literal notranslate\">False</code>. <code class=\"docutils literal notranslate\">require_ready</code> fungerar exakt som i <a class=\"reference internal\" href=\"#django.apps.apps.get_model\" title=\"django.apps.apps.get_model\"><code class=\"xref py py-meth docutils literal notranslate\">apps.get_model()</code></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.apps.AppConfig.ready\">\n<span class=\"sig-prename descclassname\">AppConfig.</span><span class=\"sig-name descname\">ready</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.apps.AppConfig.ready\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Underklasser kan åsidosätta denna metod för att utföra initialiseringsuppgifter som t.ex. registrering av signaler. Den anropas så snart registret är helt fyllt.</p>\n<p>Även om du inte kan importera modeller på modulnivå där <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a>-klasserna definieras, kan du importera dem i <code class=\"docutils literal notranslate\">ready()</code>, antingen med hjälp av en <code class=\"docutils literal notranslate\">import</code>-sats eller <a class=\"reference internal\" href=\"#django.apps.AppConfig.get_model\" title=\"django.apps.AppConfig.get_model\"><code class=\"xref py py-meth docutils literal notranslate\">get_model()</code></a>.</p>\n<p>Om du registrerar <a class=\"reference internal\" href=\"/sv/6.1/ref/signals/#module-django.db.models.signals\" title=\"django.db.models.signals: Signals sent by the model system.\"><code class=\"xref py py-mod docutils literal notranslate\">modellsignaler</code></a> kan du hänvisa till avsändaren med dess strängetikett istället för att använda själva modellklassen.</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=\"kn\">from</span> <span class=\"nn\">django.apps</span> <span class=\"kn\">import</span> AppConfig\n<span class=\"kn\">from</span> <span class=\"nn\">django.db.models.signals</span> <span class=\"kn\">import</span> pre_save\n\n\n<span class=\"k\">class</span> <span class=\"nc\">RockNRollConfig</span><span class=\"p\">(</span>AppConfig<span class=\"p\">):</span>\n    <span class=\"c1\"># ...</span>\n\n    <span class=\"k\">def</span> <span class=\"nf\">ready</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"c1\"># importing model classes</span>\n        <span class=\"kn\">from</span> <span class=\"nn\">.models</span> <span class=\"kn\">import</span> MyModel  <span class=\"c1\"># or...</span>\n\n        MyModel <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span>get_model<span class=\"p\">(</span><span class=\"s2\">&quot;MyModel&quot;</span><span class=\"p\">)</span>\n\n        <span class=\"c1\"># registering signals with the model&#39;s string label</span>\n        pre_save<span class=\"o\">.</span>connect<span class=\"p\">(</span>receiver<span class=\"p\">,</span> sender<span class=\"o\">=</span><span class=\"s2\">&quot;app_label.MyModel&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>Även om du kan komma åt modellklasser enligt beskrivningen ovan bör du undvika att interagera med databasen i din <a class=\"reference internal\" href=\"#django.apps.AppConfig.ready\" title=\"django.apps.AppConfig.ready\"><code class=\"xref py py-meth docutils literal notranslate\">ready()</code></a>-implementation. Detta omfattar modellmetoder som kör frågor (<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\">save()</code></a>, <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\">delete()</code></a>, manager-metoder med mera) och råa SQL-frågor via <code class=\"docutils literal notranslate\">django.db.connection</code>. Metoden <a class=\"reference internal\" href=\"#django.apps.AppConfig.ready\" title=\"django.apps.AppConfig.ready\"><code class=\"xref py py-meth docutils literal notranslate\">ready()</code></a> körs när varje hanteringskommando startas. Även om testdatabasens konfiguration är separat från produktionsinställningarna skulle till exempel <code class=\"docutils literal notranslate\">manage.py test</code> ändå köra vissa frågor mot <strong>produktionsdatabasen</strong>!</p>\n</aside>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>I den vanliga initialiseringsprocessen anropas metoden <code class=\"docutils literal notranslate\">ready</code> bara en gång av Django. Men i vissa hörnfall, särskilt i tester som manipulerar installerade applikationer, kan <code class=\"docutils literal notranslate\">ready</code> anropas mer än en gång. I så fall ska du antingen skriva idempotenta metoder eller sätta en flagga på dina <code class=\"docutils literal notranslate\">AppConfig</code>-klasser för att förhindra att kod som ska köras exakt en gång körs om.</p>\n</aside>\n</dd></dl>\n\n</section>\n<section id=\"namespace-packages-as-apps\">\n<span id=\"namespace-package\"></span><h3>Namnrymdspaket som appar<a class=\"heading-anchor\" href=\"#namespace-packages-as-apps\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Python-paket utan filen <code class=\"docutils literal notranslate\">__init__.py</code> kallas ”namespace-paket” och kan vara spridda över flera kataloger på olika platser i <code class=\"docutils literal notranslate\">sys.path</code> (se <span class=\"target\" id=\"index-2\"></span><a class=\"pep reference external\" href=\"https://peps.python.org/pep-0420/\"><strong>PEP 420</strong></a>).</p>\n<p>Django-applikationer kräver en enda basfilsystemssökväg där Django (beroende på konfiguration) kommer att söka efter mallar, statiska tillgångar etc. Namnrymdspaket kan således endast vara Django-applikationer om något av följande är sant:</p>\n<ol class=\"arabic simple\">\n<li><p>Namnrymdspaketet har faktiskt bara en enda plats (dvs. det är inte utspritt över mer än en katalog)</p></li>\n<li><p>Klassen <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a> som används för att konfigurera applikationen har ett klassattribut <a class=\"reference internal\" href=\"#django.apps.AppConfig.path\" title=\"django.apps.AppConfig.path\"><code class=\"xref py py-attr docutils literal notranslate\">path</code></a>, som är den absoluta katalogsökvägen som Django kommer att använda som den enda basvägen för applikationen.</p></li>\n</ol>\n<p>Om inget av dessa villkor uppfylls kommer Django att ge 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-exc docutils literal notranslate\">ImproperlyConfigured</code></a>.</p>\n</section>\n</section>\n<section id=\"application-registry\">\n<h2>Applikationsregister<a class=\"heading-anchor\" href=\"#application-registry\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.apps.apps\">\n<span class=\"sig-name descname\">apps</span><a class=\"heading-anchor\" href=\"#django.apps.apps\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Applikationsregistret tillhandahåller följande offentliga API. Metoder som inte listas nedan betraktas som privata och kan ändras utan föregående meddelande.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.apps.apps.ready\">\n<span class=\"sig-prename descclassname\">apps.</span><span class=\"sig-name descname\">ready</span><a class=\"heading-anchor\" href=\"#django.apps.apps.ready\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Booleskt attribut som sätts till <code class=\"docutils literal notranslate\">True</code> när registret är helt fyllt och alla <a class=\"reference internal\" href=\"#django.apps.AppConfig.ready\" title=\"django.apps.AppConfig.ready\"><code class=\"xref py py-meth docutils literal notranslate\">AppConfig.ready()</code></a>-metoder har anropats.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.apps.apps.get_app_configs\">\n<span class=\"sig-prename descclassname\">apps.</span><span class=\"sig-name descname\">get_app_configs</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.apps.apps.get_app_configs\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returnerar en iterabel av <a class=\"reference internal\" href=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a>-instanser.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.apps.apps.get_app_config\">\n<span class=\"sig-prename descclassname\">apps.</span><span class=\"sig-name descname\">get_app_config</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">app_label</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.apps.apps.get_app_config\"><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=\"#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a> för applikationen med den angivna <code class=\"docutils literal notranslate\">app_label</code>. Utlöser <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#LookupError\" title=\"(in Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\">LookupError</code></a> om ingen sådan applikation finns.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.apps.apps.is_installed\">\n<span class=\"sig-prename descclassname\">apps.</span><span class=\"sig-name descname\">is_installed</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">app_name</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.apps.apps.is_installed\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Kontrollerar om en applikation med det angivna namnet finns i registret. <code class=\"docutils literal notranslate\">app_name</code> är det fullständiga namnet på appen, t.ex. <code class=\"docutils literal notranslate\">'django.contrib.admin'</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.apps.apps.get_model\">\n<span class=\"sig-prename descclassname\">apps.</span><span class=\"sig-name descname\">get_model</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">app_label</em>, <em class=\"sig-param\">model_name</em>, <em class=\"sig-param\">require_ready<span class=\"o\">=</span><span class=\"default_value\">True</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.apps.apps.get_model\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returnerar <a class=\"reference internal\" href=\"/sv/6.1/ref/models/instances/#django.db.models.Model\" title=\"django.db.models.Model\"><code class=\"xref py py-class docutils literal notranslate\">Model</code></a> med de givna <code class=\"docutils literal notranslate\">app_label</code> och <code class=\"docutils literal notranslate\">model_name</code>. Som en genväg accepterar denna metod också ett enda argument i form av <code class=\"docutils literal notranslate\">app_label.model_name</code>. <code class=\"docutils literal notranslate\">model_name</code> är skiftlägesokänsligt.</p>\n<p>Ger upphov till <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#LookupError\" title=\"(in Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\">LookupError</code></a> om ingen sådan applikation eller modell finns. Ger upphov till <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#ValueError\" title=\"(in Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\">ValueError</code></a> när den anropas med ett enda argument som inte innehåller exakt en punkt.</p>\n<p>Kräver att appregistret är helt fyllt om inte argumentet <code class=\"docutils literal notranslate\">require_ready</code> är satt till <code class=\"docutils literal notranslate\">False</code>.</p>\n<p>Om du ställer in <code class=\"docutils literal notranslate\">require_ready</code> till <code class=\"docutils literal notranslate\">False</code> kan du leta upp modeller <a class=\"reference internal\" href=\"#app-loading-process\"><span class=\"std std-ref\">medan appregistret fylls på</span></a>, särskilt under den andra fasen där den importerar modeller. Då har <code class=\"docutils literal notranslate\">get_model()</code> samma effekt som att importera modellen. Det huvudsakliga användningsfallet är att konfigurera modellklasser med inställningar, till exempel <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>.</p>\n<p>När <code class=\"docutils literal notranslate\">require_ready</code> är <code class=\"docutils literal notranslate\">False</code> returnerar <code class=\"docutils literal notranslate\">get_model()</code> en modellklass som kanske inte är helt funktionell (omvända accessorer kan till exempel saknas) förrän appregistret är helt fyllt. Av denna anledning är det bäst att lämna <code class=\"docutils literal notranslate\">require_ready</code> till standardvärdet <code class=\"docutils literal notranslate\">True</code> när det är möjligt.</p>\n</dd></dl>\n\n</section>\n<section id=\"initialization-process\">\n<span id=\"app-loading-process\"></span><h2>Initialiseringsprocess<a class=\"heading-anchor\" href=\"#initialization-process\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"how-applications-are-loaded\">\n<h3>Hur applikationer laddas<a class=\"heading-anchor\" href=\"#how-applications-are-loaded\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>När Django startar ansvarar <a class=\"reference internal\" href=\"#django.setup\" title=\"django.setup\"><code class=\"xref py py-func docutils literal notranslate\">django.setup()</code></a> för att fylla i applikationsregistret.</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.setup\">\n<span class=\"sig-name descname\">setup</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">set_prefix<span class=\"o\">=</span><span class=\"default_value\">True</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.setup\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Konfigurerar Django genom att:</p>\n<ul class=\"simple\">\n<li><p>Ladda inställningarna.</p></li>\n<li><p>Sätta upp loggning.</p></li>\n<li><p>Om <code class=\"docutils literal notranslate\">set_prefix</code> är True, ställs URL-resolverns skriptprefix in på <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-FORCE_SCRIPT_NAME\"><code class=\"xref std std-setting docutils literal notranslate\">FORCE_SCRIPT_NAME</code></a> om det är definierat, eller <code class=\"docutils literal notranslate\">/</code> annars.</p></li>\n<li><p>Initialisering av programregistret.</p></li>\n</ul>\n<p>Denna funktion anropas automatiskt:</p>\n<ul class=\"simple\">\n<li><p>När du kör en HTTP-server via Djangos ASGI- eller WSGI-stöd.</p></li>\n<li><p>När du anropar ett managementkommando.</p></li>\n</ul>\n<p>Den måste anropas explicit i andra fall, t.ex. i vanliga Python-skript.</p>\n</dd></dl>\n\n<p>Applikationsregistret initieras i tre steg. Vid varje steg bearbetar Django alla applikationer i ordningen <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>.</p>\n<ol class=\"arabic\">\n<li><p>Först importerar Django varje objekt i <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>.</p>\n<p>Om det är en applikationskonfigurationsklass importerar Django applikationens rotpaket, definierat av dess <a class=\"reference internal\" href=\"#django.apps.AppConfig.name\" title=\"django.apps.AppConfig.name\"><code class=\"xref py py-attr docutils literal notranslate\">name</code></a>-attribut. Om det är ett Python-paket letar Django efter en applikationskonfiguration i en <code class=\"docutils literal notranslate\">apps.py</code>-undermodul, eller skapar en standardapplikationskonfiguration.</p>\n<p><em>I det här skedet ska din kod inte importera några modeller!</em></p>\n<p>Med andra ord bör dina programs rotpaket och de moduler som definierar dina programkonfigurationsklasser inte importera några modeller, inte ens indirekt.</p>\n<p>Strängt taget tillåter Django import av modeller när deras applikationskonfiguration har laddats. Men för att undvika onödiga begränsningar av ordningen på <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> rekommenderas det starkt att inte importera några modeller i det här skedet.</p>\n<p>När det här steget är klart kan API:er som arbetar med applikationskonfigurationer, till exempel <a class=\"reference internal\" href=\"#django.apps.apps.get_app_config\" title=\"django.apps.apps.get_app_config\"><code class=\"xref py py-meth docutils literal notranslate\">get_app_config()</code></a>, användas.</p>\n</li>\n<li><p>Sedan försöker Django importera undermodulen <code class=\"docutils literal notranslate\">models</code> för varje applikation, om det finns en sådan.</p>\n<p>Du måste definiera eller importera alla modeller i din applikations <code class=\"docutils literal notranslate\">models.py</code> eller <code class=\"docutils literal notranslate\">models/__init__.py</code>. Annars kan det hända att programregistret inte är helt fyllt vid denna tidpunkt, vilket kan leda till att ORM inte fungerar som det ska.</p>\n<p>När det här steget är klart kan API:er som arbetar med modeller, till exempel <a class=\"reference internal\" href=\"#django.apps.apps.get_model\" title=\"django.apps.apps.get_model\"><code class=\"xref py py-meth docutils literal notranslate\">get_model()</code></a>, användas.</p>\n</li>\n<li><p>Till sist kör Django metoden <a class=\"reference internal\" href=\"#django.apps.AppConfig.ready\" title=\"django.apps.AppConfig.ready\"><code class=\"xref py py-meth docutils literal notranslate\">ready()</code></a> för varje applikationskonfiguration.</p></li>\n</ol>\n</section>\n<section id=\"troubleshooting\">\n<span id=\"applications-troubleshooting\"></span><h3>Felsökning<a class=\"heading-anchor\" href=\"#troubleshooting\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Här följer några vanliga problem som du kan stöta på under initialiseringen:</p>\n<ul>\n<li><p><a class=\"reference internal\" href=\"/sv/6.1/ref/exceptions/#django.core.exceptions.AppRegistryNotReady\" title=\"django.core.exceptions.AppRegistryNotReady\"><code class=\"xref py py-class docutils literal notranslate\">AppRegistryNotReady</code></a>: Detta händer när import av en applikationskonfiguration eller en modellmodul utlöser kod som är beroende av appregistret.</p>\n<p>Exempelvis använder <a class=\"reference internal\" href=\"/sv/6.1/ref/utils/#django.utils.translation.gettext\" title=\"django.utils.translation.gettext\"><code class=\"xref py py-func docutils literal notranslate\">gettext()</code></a> applikationsregistret för att slå upp översättningskataloger i applikationer. Om du vill översätta vid import måste du i stället använda <a class=\"reference internal\" href=\"/sv/6.1/ref/utils/#django.utils.translation.gettext_lazy\" title=\"django.utils.translation.gettext_lazy\"><code class=\"xref py py-func docutils literal notranslate\">gettext_lazy()</code></a>. (Att använda <a class=\"reference internal\" href=\"/sv/6.1/ref/utils/#django.utils.translation.gettext\" title=\"django.utils.translation.gettext\"><code class=\"xref py py-func docutils literal notranslate\">gettext()</code></a> skulle vara ett fel eftersom översättningen då görs vid import i stället för vid varje begäran utifrån det aktiva språket.)</p>\n<p>Om du kör databasfrågor med ORM vid importtillfället i modellmoduler kommer detta undantag också att utlösas. ORM kan inte fungera korrekt förrän alla modeller är tillgängliga.</p>\n<p>Det här undantaget inträffar också om du glömmer att anropa <a class=\"reference internal\" href=\"#django.setup\" title=\"django.setup\"><code class=\"xref py py-func docutils literal notranslate\">django.setup()</code></a> i ett fristående Python-skript.</p>\n</li>\n<li><p><code class=\"docutils literal notranslate\">ImportError: cannot import name ...</code> Detta händer om importsekvensen hamnar i en slinga.</p>\n<p>För att eliminera sådana problem bör du minimera beroendet mellan dina modellmoduler och göra så lite arbete som möjligt vid importtillfället. För att undvika att exekvera kod vid importtillfället kan du flytta den till en funktion och cacha dess resultat. Koden kommer att exekveras när du först behöver dess resultat. Det här konceptet kallas ”lazy evaluation”.</p>\n</li>\n<li><p><code class=\"docutils literal notranslate\">django.contrib.admin</code> utför automatiskt autodiscovery av <code class=\"docutils literal notranslate\">admin</code>-moduler i installerade applikationer. För att förhindra det, ändra 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> så att den innehåller <code class=\"docutils literal notranslate\">'django.contrib.admin.apps.SimpleAdminConfig'</code> istället för <code class=\"docutils literal notranslate\">'django.contrib.admin'</code>.</p></li>\n<li><p><code class=\"docutils literal notranslate\">RuntimeWarning: Accessing the database during app initialization is discouraged.</code> Denna varning utlöses för databasfrågor som körs innan appar är klara, t.ex. under modulimport eller i metoden <a class=\"reference internal\" href=\"#django.apps.AppConfig.ready\" title=\"django.apps.AppConfig.ready\"><code class=\"xref py py-meth docutils literal notranslate\">AppConfig.ready()</code></a>. Sådana för tidiga databasfrågor avråds eftersom de kommer att köras under uppstarten av varje hanteringskommando, vilket kommer att sakta ner projektstarten, potentiellt cacha inaktuella data och kan till och med misslyckas om migreringar väntar.</p>\n<p>Ett vanligt misstag är t.ex. att göra en databasfråga för att fylla i formulärfältens val:</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\">LocationForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n    country <span class=\"o\">=</span> forms<span class=\"o\">.</span>ChoiceField<span class=\"p\">(</span>choices<span class=\"o\">=</span><span class=\"p\">[</span>c<span class=\"o\">.</span>name <span class=\"k\">for</span> c <span class=\"ow\">in</span> Country<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()])</span>\n</code></pre></div>\n<p>I exemplet ovan körs frågan från <code class=\"docutils literal notranslate\">Country.objects.all()</code> under modulimporten, eftersom <code class=\"docutils literal notranslate\">QuerySet</code> itereras över. För att undvika varningen kan formuläret använda en <a class=\"reference internal\" href=\"/sv/6.1/ref/forms/fields/#django.forms.ModelChoiceField\" title=\"django.forms.ModelChoiceField\"><code class=\"xref py py-class docutils literal notranslate\">ModelChoiceField</code></a> istället:</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\">LocationForm</span><span class=\"p\">(</span>forms<span class=\"o\">.</span>Form<span class=\"p\">):</span>\n    country <span class=\"o\">=</span> forms<span class=\"o\">.</span>ModelChoiceField<span class=\"p\">(</span>queryset<span class=\"o\">=</span>Country<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">())</span>\n</code></pre></div>\n<p>För att göra det lättare att hitta koden som utlöste varningen kan du få Python <a class=\"reference external\" href=\"https://docs.python.org/3/library/warnings.html#warning-filter\" title=\"(in Python v3.14)\"><span class=\"xref std std-ref\">behandla varningar som fel</span></a> att visa stackspårningen, till exempel med <code class=\"docutils literal notranslate\">python -Werror manage.py shell</code>.</p>\n</li>\n</ul>\n</section>\n</section>","rootId":"module-django.apps","toc":[{"title":"Projekt och tillämpningar","anchor":"projects-and-applications","children":[]},{"title":"Konfigurera applikationer","anchor":"configuring-applications","children":[{"title":"För ansökningsförfattare","anchor":"for-application-authors","children":[]},{"title":"För applikationsanvändare","anchor":"for-application-users","children":[]}]},{"title":"Konfiguration av applikation","anchor":"application-configuration","children":[{"title":"Konfigurerbara attribut","anchor":"configurable-attributes","children":[]},{"title":"Skrivskyddade attribut","anchor":"read-only-attributes","children":[]},{"title":"Metoder","anchor":"methods","children":[]},{"title":"Namnrymdspaket som appar","anchor":"namespace-packages-as-apps","children":[]}]},{"title":"Applikationsregister","anchor":"application-registry","children":[]},{"title":"Initialiseringsprocess","anchor":"initialization-process","children":[{"title":"Hur applikationer laddas","anchor":"how-applications-are-loaded","children":[]},{"title":"Felsökning","anchor":"troubleshooting","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"API-referens","url":"/sv/6.1/ref/"}],"prev":{"docname":"ref/index","title":"API-referens","url":"/sv/6.1/ref/"},"next":{"docname":"ref/checks","title":"Ramverk för systemkontroll","url":"/sv/6.1/ref/checks/"},"formats":{"html":"/sv/6.1/ref/applications/","markdown":"/sv/6.1/ref/applications.md","json":"/sv/6.1/ref/applications.json"},"source":"https://github.com/django/django/blob/stable/6.1.x/docs/ref/applications.txt","official":"https://docs.djangoproject.com/sv/6.1/ref/applications/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}