{"title":"Signaler","version":"5.2","locale":"sv","docname":"ref/signals","url":"/sv/5.2/ref/signals/","canonical":"https://djangodocs.dev/sv/5.2/ref/signals/","summary":"En lista över alla signaler som Django skickar. Alla inbyggda signaler skickas med hjälp av send()-metoden.","html":"<h1>Signaler<a class=\"heading-anchor\" href=\"#signals\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>En lista över alla signaler som Django skickar. Alla inbyggda signaler skickas med hjälp av <a class=\"reference internal\" href=\"/sv/5.2/topics/signals/#django.dispatch.Signal.send\" title=\"django.dispatch.Signal.send\"><code class=\"xref py py-meth docutils literal notranslate\">send()</code></a>-metoden.</p>\n<aside class=\"admonition admonition-seealso\" role=\"note\">\n<p class=\"admonition-title\">Se även</p>\n<p>Se dokumentationen för <a class=\"reference internal\" href=\"/sv/5.2/topics/signals/\"><span class=\"doc\">signal dispatcher</span></a> för information om hur du registrerar dig för och tar emot signaler.</p>\n<p>Ramverket <a class=\"reference internal\" href=\"/sv/5.2/topics/auth/\"><span class=\"doc\">authentication</span></a> sänder <a class=\"reference internal\" href=\"/sv/5.2/ref/contrib/auth/#topics-auth-signals\"><span class=\"std std-ref\">signaler när en användare är inloggad/utloggad</span></a>.</p>\n</aside>\n<section id=\"module-django.db.models.signals\">\n<span id=\"model-signals\"></span><h2>Modellsignaler<a class=\"heading-anchor\" href=\"#module-django.db.models.signals\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Modulen <a class=\"reference internal\" href=\"#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\">django.db.models.signals</code></a> definierar en uppsättning signaler som skickas av modellsystemet.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>Signaler kan göra din kod svårare att underhålla. Överväg att implementera en hjälpmetod på en <a class=\"reference internal\" href=\"/sv/5.2/topics/db/managers/#custom-managers\"><span class=\"std std-ref\">custom manager</span></a>, för att både uppdatera dina modeller och utföra ytterligare logik, eller annars <a class=\"reference internal\" href=\"/sv/5.2/topics/db/models/#overriding-model-methods\"><span class=\"std std-ref\">overriding model methods</span></a> innan du använder modellsignaler.</p>\n</aside>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>Många av dessa signaler skickas av olika modellmetoder som <code class=\"docutils literal notranslate\">__init__()</code> eller <a class=\"reference internal\" href=\"/sv/5.2/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> som du kan åsidosätta i din egen kod.</p>\n<p>Om du åsidosätter dessa metoder i din modell måste du anropa den överordnade klassens metoder för att dessa signaler ska skickas.</p>\n<p>Observera också att Django lagrar signalhanterare som svaga referenser som standard, så om din hanterare är en lokal funktion kan den bli skräpinsamlad.  För att förhindra detta, skicka <code class=\"docutils literal notranslate\">weak=False</code> när du anropar signalens <a class=\"reference internal\" href=\"/sv/5.2/topics/signals/#django.dispatch.Signal.connect\" title=\"django.dispatch.Signal.connect\"><code class=\"xref py py-meth docutils literal notranslate\">connect()</code></a>.</p>\n</aside>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Modellsignaler <code class=\"docutils literal notranslate\">avsändare</code>-modeller kan refereras till när man ansluter en mottagare genom att ange dess fullständiga applikationsetikett. Till exempel: kan en <code class=\"docutils literal notranslate\">Question</code>-modell som definieras i <code class=\"docutils literal notranslate\">polls</code>-applikationen refereras som <code class=\"docutils literal notranslate\">'polls.Question'</code>. Denna typ av referens kan vara ganska praktisk när man hanterar cirkulära importberoenden och utbytbara modeller.</p>\n</aside>\n<section id=\"pre-init\">\n<h3><code class=\"docutils literal notranslate\">pre_init</code><a class=\"heading-anchor\" href=\"#pre-init\"><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.db.models.signals.pre_init\">\n<span class=\"sig-prename descclassname\">django.db.models.signals.</span><span class=\"sig-name descname\">pre_init</span><a class=\"heading-anchor\" href=\"#django.db.models.signals.pre_init\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>När du instansierar en Django-modell skickas den här signalen i början av modellens metod <code class=\"docutils literal notranslate\">__init__()</code>.</p>\n<p>Argument som skickas med denna signal:</p>\n<dl class=\"simple\">\n<dt>avsändare</dt><dd><p>Den modellklass som just fått en instans skapad.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">args</code></dt><dd><p>En lista med positionella argument som skickas till <code class=\"docutils literal notranslate\">__init__()</code>.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">kwargs</code></dt><dd><p>En ordlista med nyckelordsargument som skickas till <code class=\"docutils literal notranslate\">__init__()</code>.</p>\n</dd>\n</dl>\n<p>Till exempel: har <a class=\"reference internal\" href=\"/sv/5.2/intro/tutorial02/\"><span class=\"doc\">tutorial</span></a> den här raden:</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>q <span class=\"o\">=</span> Question<span class=\"p\">(</span>question_text<span class=\"o\">=</span><span class=\"s2\">&quot;What&#39;s new?&quot;</span><span class=\"p\">,</span> pub_date<span class=\"o\">=</span>timezone<span class=\"o\">.</span>now<span class=\"p\">())</span>\n</code></pre></div>\n<p>De argument som skickas till en <a class=\"reference internal\" href=\"#django.db.models.signals.pre_init\" title=\"django.db.models.signals.pre_init\"><code class=\"xref py py-data docutils literal notranslate\">pre_init</code></a> hanterare skulle vara:</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>Argument</p></th>\n<th class=\"head\"><p>Värde</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p>avsändare</p></td>\n<td><p><code class=\"docutils literal notranslate\">Fråga</code> (själva klassen)</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">args</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">[]</code> (en tom lista eftersom det inte fanns några positionella argument som skickades till <code class=\"docutils literal notranslate\">__init__()</code>))</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">kwargs</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{'question_text': &quot;What's new?&quot;,</code>’pub_date’: datetime.datetime(2012, 2, 26, 13, 0, 0, 775217, tzinfo=datetime.timezone.utc)}``</p></td>\n</tr>\n</tbody>\n</table>\n</div>\n</section>\n<section id=\"post-init\">\n<h3><code class=\"docutils literal notranslate\">post_init</code><a class=\"heading-anchor\" href=\"#post-init\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.signals.post_init\">\n<span class=\"sig-prename descclassname\">django.db.models.signals.</span><span class=\"sig-name descname\">post_init</span><a class=\"heading-anchor\" href=\"#django.db.models.signals.post_init\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Som pre_init, men den här skickas när metoden <code class=\"docutils literal notranslate\">__init__()</code> är klar.</p>\n<p>Argument som skickas med denna signal:</p>\n<dl>\n<dt>avsändare</dt><dd><p>Som ovan: modellklassen som just har fått en instans skapad.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">instans</code></dt><dd><p>Den faktiska instansen av den modell som just har skapats.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p><a class=\"reference internal\" href=\"/sv/5.2/ref/models/instances/#django.db.models.Model._state\" title=\"django.db.models.Model._state\"><code class=\"xref py py-attr docutils literal notranslate\">instance._state</code></a> ställs inte in innan signalen <code class=\"docutils literal notranslate\">post_init</code> skickas, så attributen <code class=\"docutils literal notranslate\">_state</code> har alltid sina standardvärden. Till exempel: är <code class=\"docutils literal notranslate\">_state.db</code> <code class=\"docutils literal notranslate\">None</code>.</p>\n</aside>\n</dd>\n</dl>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>Av prestandaskäl bör du inte utföra frågor i mottagare av signalerna <code class=\"docutils literal notranslate\">pre_init</code> eller <code class=\"docutils literal notranslate\">post_init</code> eftersom de skulle utföras för varje instans som returneras under iterationen av queryset.</p>\n</aside>\n</section>\n<section id=\"pre-save\">\n<h3><code class=\"docutils literal notranslate\">pre_save</code><a class=\"heading-anchor\" href=\"#pre-save\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.signals.pre_save\">\n<span class=\"sig-prename descclassname\">django.db.models.signals.</span><span class=\"sig-name descname\">pre_save</span><a class=\"heading-anchor\" href=\"#django.db.models.signals.pre_save\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Detta skickas i början av en modells <a class=\"reference internal\" href=\"/sv/5.2/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>-metod.</p>\n<p>Argument som skickas med denna signal:</p>\n<dl class=\"simple\">\n<dt>avsändare</dt><dd><p>Modellklassen.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">instans</code></dt><dd><p>Den faktiska instans som sparas.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">raw</code></dt><dd><p>En boolean; <code class=\"docutils literal notranslate\">True</code> om modellen sparas exakt som den presenteras (t.ex. vid laddning av en <a class=\"reference internal\" href=\"/sv/5.2/topics/db/fixtures/#fixtures-explanation\"><span class=\"std std-ref\">fixture</span></a>). Man bör inte fråga/ändra andra poster i databasen eftersom databasen kanske inte är i ett konsekvent tillstånd ännu.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">använder</code></dt><dd><p>Det databasalias som används.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">uppdatera_fält</code></dt><dd><p>Den uppsättning fält som ska uppdateras enligt <a class=\"reference internal\" href=\"/sv/5.2/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>, eller <code class=\"docutils literal notranslate\">None</code> om <code class=\"docutils literal notranslate\">update_fields</code> inte skickades till <code class=\"docutils literal notranslate\">save()</code>.</p>\n</dd>\n</dl>\n</section>\n<section id=\"post-save\">\n<h3><code class=\"docutils literal notranslate\">post_save</code><a class=\"heading-anchor\" href=\"#post-save\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.signals.post_save\">\n<span class=\"sig-prename descclassname\">django.db.models.signals.</span><span class=\"sig-name descname\">post_save</span><a class=\"heading-anchor\" href=\"#django.db.models.signals.post_save\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Som <a class=\"reference internal\" href=\"#django.db.models.signals.pre_save\" title=\"django.db.models.signals.pre_save\"><code class=\"xref py py-data docutils literal notranslate\">pre_save</code></a>, men skickas i slutet av metoden <a class=\"reference internal\" href=\"/sv/5.2/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>.</p>\n<p>Argument som skickas med denna signal:</p>\n<dl class=\"simple\">\n<dt>avsändare</dt><dd><p>Modellklassen.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">instans</code></dt><dd><p>Den faktiska instans som sparas.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">skapad</code></dt><dd><p>En boolean; <code class=\"docutils literal notranslate\">True</code> om en ny post skapades.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">raw</code></dt><dd><p>En boolean; <code class=\"docutils literal notranslate\">True</code> om modellen sparas exakt som den presenteras (t.ex. vid laddning av en <a class=\"reference internal\" href=\"/sv/5.2/topics/db/fixtures/#fixtures-explanation\"><span class=\"std std-ref\">fixture</span></a>). Man bör inte fråga/ändra andra poster i databasen eftersom databasen kanske inte är i ett konsekvent tillstånd ännu.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">använder</code></dt><dd><p>Det databasalias som används.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">uppdatera_fält</code></dt><dd><p>Den uppsättning fält som ska uppdateras enligt <a class=\"reference internal\" href=\"/sv/5.2/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>, eller <code class=\"docutils literal notranslate\">None</code> om <code class=\"docutils literal notranslate\">update_fields</code> inte skickades till <code class=\"docutils literal notranslate\">save()</code>.</p>\n</dd>\n</dl>\n</section>\n<section id=\"pre-delete\">\n<h3><code class=\"docutils literal notranslate\">pre_delete</code><a class=\"heading-anchor\" href=\"#pre-delete\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.signals.pre_delete\">\n<span class=\"sig-prename descclassname\">django.db.models.signals.</span><span class=\"sig-name descname\">pre_delete</span><a class=\"heading-anchor\" href=\"#django.db.models.signals.pre_delete\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Skickas i början av en models <a class=\"reference internal\" href=\"/sv/5.2/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>-metod och en querysets <a class=\"reference internal\" href=\"/sv/5.2/ref/models/querysets/#django.db.models.query.QuerySet.delete\" title=\"django.db.models.query.QuerySet.delete\"><code class=\"xref py py-meth docutils literal notranslate\">delete()</code></a>-metod.</p>\n<p>Argument som skickas med denna signal:</p>\n<dl class=\"simple\">\n<dt>avsändare</dt><dd><p>Modellklassen.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">instans</code></dt><dd><p>Den faktiska instans som raderas.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">använder</code></dt><dd><p>Det databasalias som används.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">ursprung</code></dt><dd><p>Den instans av <code class=\"docutils literal notranslate\">Model</code> eller <code class=\"docutils literal notranslate\">QuerySet</code> från vilken borttagningen skedde, dvs. den instans vars metod <code class=\"docutils literal notranslate\">delete()</code> anropades.</p>\n</dd>\n</dl>\n</section>\n<section id=\"post-delete\">\n<h3><code class=\"docutils literal notranslate\">post_delete</code><a class=\"heading-anchor\" href=\"#post-delete\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.signals.post_delete\">\n<span class=\"sig-prename descclassname\">django.db.models.signals.</span><span class=\"sig-name descname\">post_delete</span><a class=\"heading-anchor\" href=\"#django.db.models.signals.post_delete\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Som <a class=\"reference internal\" href=\"#django.db.models.signals.pre_delete\" title=\"django.db.models.signals.pre_delete\"><code class=\"xref py py-data docutils literal notranslate\">pre_delete</code></a>, men skickas i slutet av en models <a class=\"reference internal\" href=\"/sv/5.2/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>-metod och en querysets <a class=\"reference internal\" href=\"/sv/5.2/ref/models/querysets/#django.db.models.query.QuerySet.delete\" title=\"django.db.models.query.QuerySet.delete\"><code class=\"xref py py-meth docutils literal notranslate\">delete()</code></a>-metod.</p>\n<p>Argument som skickas med denna signal:</p>\n<dl>\n<dt>avsändare</dt><dd><p>Modellklassen.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">instans</code></dt><dd><p>Den faktiska instans som raderas.</p>\n<p>Observera att objektet inte längre kommer att finnas i databasen, så var mycket försiktig med vad du gör med denna instans.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">använder</code></dt><dd><p>Det databasalias som används.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">ursprung</code></dt><dd><p>Den instans av <code class=\"docutils literal notranslate\">Model</code> eller <code class=\"docutils literal notranslate\">QuerySet</code> från vilken borttagningen skedde, dvs. den instans vars metod <code class=\"docutils literal notranslate\">delete()</code> anropades.</p>\n</dd>\n</dl>\n</section>\n<section id=\"m2m-changed\">\n<h3><code class=\"docutils literal notranslate\">m2m_changed</code><a class=\"heading-anchor\" href=\"#m2m-changed\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.signals.m2m_changed\">\n<span class=\"sig-prename descclassname\">django.db.models.signals.</span><span class=\"sig-name descname\">m2m_changed</span><a class=\"heading-anchor\" href=\"#django.db.models.signals.m2m_changed\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Skickas när en <a class=\"reference internal\" href=\"/sv/5.2/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> ändras på en modellinstans. Strängt taget är detta inte en modellsignal eftersom den skickas av <a class=\"reference internal\" href=\"/sv/5.2/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a>, men eftersom den kompletterar <a class=\"reference internal\" href=\"#django.db.models.signals.pre_save\" title=\"django.db.models.signals.pre_save\"><code class=\"xref py py-data docutils literal notranslate\">pre_save</code></a>/<a class=\"reference internal\" href=\"#django.db.models.signals.post_save\" title=\"django.db.models.signals.post_save\"><code class=\"xref py py-data docutils literal notranslate\">post_save</code></a> och <a class=\"reference internal\" href=\"#django.db.models.signals.pre_delete\" title=\"django.db.models.signals.pre_delete\"><code class=\"xref py py-data docutils literal notranslate\">pre_delete</code></a>/<a class=\"reference internal\" href=\"#django.db.models.signals.post_delete\" title=\"django.db.models.signals.post_delete\"><code class=\"xref py py-data docutils literal notranslate\">post_delete</code></a> när det gäller att spåra ändringar i modeller, inkluderas den här.</p>\n<p>Argument som skickas med denna signal:</p>\n<dl>\n<dt>avsändare</dt><dd><p>Den mellanliggande modellklassen som beskriver <a class=\"reference internal\" href=\"/sv/5.2/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a>. Denna klass skapas automatiskt när ett many-to-many-fält definieras; du kan komma åt den med hjälp av attributet <code class=\"docutils literal notranslate\">through</code> på many-to-many-fältet.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">instans</code></dt><dd><p>Den instans vars many-to-many-relation uppdateras. Detta kan vara en instans av <code class=\"docutils literal notranslate\">sender</code>, eller av den klass som <a class=\"reference internal\" href=\"/sv/5.2/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> är relaterad till.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">handling</code></dt><dd><p>En sträng som anger vilken typ av uppdatering som görs av relationen. Detta kan vara något av följande:</p>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\">&quot;pre_add&quot;</code></dt><dd><p>Skickas <em>innan</em> ett eller flera objekt läggs till i relationen.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">&quot;post_add&quot;</code></dt><dd><p>Skickas <em>efter</em> att ett eller flera objekt har lagts till i relationen.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">&quot;pre_remove&quot;</code></dt><dd><p>Skickas <em>innan</em> ett eller flera objekt tas bort från relationen.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">&quot;post_remove&quot;</code></dt><dd><p>Skickas <em>efter</em> att ett eller flera objekt har tagits bort från relationen.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">&quot;pre_clear&quot;</code></dt><dd><p>Skickas <em>innan</em> relationen är avklarad.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">&quot;post_clear&quot;</code></dt><dd><p>Skickas <em>efter</em> att relationen är avklarad.</p>\n</dd>\n</dl>\n</dd>\n<dt><code class=\"docutils literal notranslate\">omvänd</code></dt><dd><p>Anger vilken sida av relationen som uppdateras (dvs. om det är den framåtriktade eller omvända relationen som ändras).</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">modell</code></dt><dd><p>Klassen för de objekt som läggs till i, tas bort från eller rensas från relationen.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">pk_set</code></dt><dd><p>För åtgärderna <code class=\"docutils literal notranslate\">pre_add</code> och <code class=\"docutils literal notranslate\">post_add</code> är detta en uppsättning primärnyckelvärden som kommer att läggas till, eller har lagts till, i relationen. Detta kan vara en delmängd av de värden som lämnats in för att läggas till, eftersom inmatningar måste filtrera befintliga värden för att undvika ett <code class=\"docutils literal notranslate\">IntegrityError</code> i databasen.</p>\n<p>För åtgärderna <code class=\"docutils literal notranslate\">pre_remove</code> och <code class=\"docutils literal notranslate\">post_remove</code> är detta en uppsättning primärnyckelvärden som skickades in för att tas bort från relationen. Detta är inte beroende av om värdena faktiskt kommer att tas bort eller har tagits bort. I synnerhet kan icke-existerande värden skickas in och visas då i <code class=\"docutils literal notranslate\">pk_set</code>, även om de inte har någon effekt på databasen.</p>\n<p>För åtgärderna <code class=\"docutils literal notranslate\">pre_clear</code> och <code class=\"docutils literal notranslate\">post_clear</code> är detta <code class=\"docutils literal notranslate\">None</code>.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">använder</code></dt><dd><p>Det databasalias som används.</p>\n</dd>\n</dl>\n<p>Till exempel:, om en <code class=\"docutils literal notranslate\">Pizza</code> kan ha flera <code class=\"docutils literal notranslate\">Topping</code>-objekt, modellerade 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\">Topping</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    <span class=\"c1\"># ...</span>\n    <span class=\"k\">pass</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Pizza</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    <span class=\"c1\"># ...</span>\n    toppings <span class=\"o\">=</span> models<span class=\"o\">.</span>ManyToManyField<span class=\"p\">(</span>Topping<span class=\"p\">)</span>\n</code></pre></div>\n<p>Om vi ansluter en hanterare 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.db.models.signals</span> <span class=\"kn\">import</span> m2m_changed\n\n\n<span class=\"k\">def</span> <span class=\"nf\">toppings_changed</span><span class=\"p\">(</span>sender<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n    <span class=\"c1\"># Do something</span>\n    <span class=\"k\">pass</span>\n\n\nm2m_changed<span class=\"o\">.</span>connect<span class=\"p\">(</span>toppings_changed<span class=\"p\">,</span> sender<span class=\"o\">=</span>Pizza<span class=\"o\">.</span>toppings<span class=\"o\">.</span>through<span class=\"p\">)</span>\n</code></pre></div>\n<p>och gjorde sedan något liknande:</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>p <span class=\"o\">=</span> Pizza<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span><span class=\"o\">...</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>t <span class=\"o\">=</span> Topping<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span><span class=\"o\">...</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>p<span class=\"o\">.</span>toppings<span class=\"o\">.</span>add<span class=\"p\">(</span>t<span class=\"p\">)</span>\n</code></pre></div>\n<p>de argument som skickas till en <a class=\"reference internal\" href=\"#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> hanterare (<code class=\"docutils literal notranslate\">toppings_changed</code> i exemplet ovan) skulle vara:</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>Argument</p></th>\n<th class=\"head\"><p>Värde</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p>avsändare</p></td>\n<td><p><code class=\"docutils literal notranslate\">Pizza.toppings.through</code> (den mellanliggande m2m-klassen)</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">instans</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">p</code> (instansen <code class=\"docutils literal notranslate\">Pizza</code> som modifieras)</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">handling</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">&quot;pre_add&quot;</code> (följt av en separat signal med <code class=\"docutils literal notranslate\">&quot;post_add&quot;</code>)</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">omvänd</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">False</code> (<code class=\"docutils literal notranslate\">Pizza</code> innehåller <a class=\"reference internal\" href=\"/sv/5.2/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a>, så detta anrop ändrar den framåtriktade relationen)</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">modell</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">Topping</code> (klassen för de objekt som läggs till <code class=\"docutils literal notranslate\">Pizza</code>)</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">pk_set</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{t.id}</code> (eftersom endast <code class=\"docutils literal notranslate\">Topping t</code> lades till i relationen)</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">använder</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">&quot;default&quot;</code> (eftersom standardroutern skickar skrivningar hit)</p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>Och om vi då skulle göra något sådant här:</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>t<span class=\"o\">.</span>pizza_set<span class=\"o\">.</span>remove<span class=\"p\">(</span>p<span class=\"p\">)</span>\n</code></pre></div>\n<p>de argument som skickas till en <a class=\"reference internal\" href=\"#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> hanterare skulle vara:</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>Argument</p></th>\n<th class=\"head\"><p>Värde</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p>avsändare</p></td>\n<td><p><code class=\"docutils literal notranslate\">Pizza.toppings.through</code> (den mellanliggande m2m-klassen)</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">instans</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">t</code> (instansen <code class=\"docutils literal notranslate\">Topping</code> som modifieras)</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">handling</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">&quot;pre_remove&quot;</code> (följt av en separat signal med <code class=\"docutils literal notranslate\">&quot;post_remove&quot;</code>)</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">omvänd</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">True</code> (<code class=\"docutils literal notranslate\">Pizza</code> innehåller <a class=\"reference internal\" href=\"/sv/5.2/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a>, så detta anrop modifierar den omvända relationen)</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">modell</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">Pizza</code> (klassen för de objekt som tagits bort från <code class=\"docutils literal notranslate\">Topping</code>)</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">pk_set</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">{p.id}</code> (eftersom endast <code class=\"docutils literal notranslate\">Pizza p</code> togs bort från relationen)</p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">använder</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">&quot;default&quot;</code> (eftersom standardroutern skickar skrivningar hit)</p></td>\n</tr>\n</tbody>\n</table>\n</div>\n</section>\n<section id=\"class-prepared\">\n<h3><code class=\"docutils literal notranslate\">klass_förberedd</code><a class=\"heading-anchor\" href=\"#class-prepared\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.signals.class_prepared\">\n<span class=\"sig-prename descclassname\">django.db.models.signals.</span><span class=\"sig-name descname\">class_prepared</span><a class=\"heading-anchor\" href=\"#django.db.models.signals.class_prepared\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Skickas när en modellklass har ”förberetts”, det vill säga när en modell har definierats och registrerats i Djangos modellsystem. Django använder denna signal internt; den används vanligtvis inte i tredjepartsapplikationer.</p>\n<p>Eftersom den här signalen skickas under appregisterpopulationsprocessen och <a class=\"reference internal\" href=\"/sv/5.2/ref/applications/#django.apps.AppConfig.ready\" title=\"django.apps.AppConfig.ready\"><code class=\"xref py py-meth docutils literal notranslate\">AppConfig.ready()</code></a> körs efter att appregistret är helt populerat, kan mottagare inte anslutas i den metoden. En möjlighet är att ansluta dem till <code class=\"docutils literal notranslate\">AppConfig.__init__()</code> istället, och se till att inte importera modeller eller utlösa anrop till appregistret.</p>\n<p>Argument som skickas med denna signal:</p>\n<dl class=\"simple\">\n<dt>avsändare</dt><dd><p>Modellklassen som just var förberedd.</p>\n</dd>\n</dl>\n</section>\n</section>\n<section id=\"management-signals\">\n<h2>Ledningens signaler<a class=\"heading-anchor\" href=\"#management-signals\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Signaler skickade av <a class=\"reference internal\" href=\"/sv/5.2/ref/django-admin/\"><span class=\"doc\">django-admin</span></a>.</p>\n<section id=\"pre-migrate\">\n<h3><code class=\"docutils literal notranslate\">pre_migrate</code><a class=\"heading-anchor\" href=\"#pre-migrate\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.signals.pre_migrate\">\n<span class=\"sig-prename descclassname\">django.db.models.signals.</span><span class=\"sig-name descname\">pre_migrate</span><a class=\"heading-anchor\" href=\"#django.db.models.signals.pre_migrate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Skickas av kommandot <a class=\"reference internal\" href=\"/sv/5.2/ref/django-admin/#django-admin-migrate\"><code class=\"xref std std-djadmin docutils literal notranslate\">migrate</code></a> innan det börjar installera ett program. Det sänds inte ut för program som saknar en <code class=\"docutils literal notranslate\">models</code>-modul.</p>\n<p>Argument som skickas med denna signal:</p>\n<dl>\n<dt>avsändare</dt><dd><p>En <a class=\"reference internal\" href=\"/sv/5.2/ref/applications/#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a>-instans för den applikation som ska migreras/synkroniseras.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">app_config</code></dt><dd><p>Samma som <code class=\"docutils literal notranslate\">avsändare</code>.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">verbosity</code></dt><dd><p>Anger hur mycket information <code class=\"docutils literal notranslate\">manage.py</code> skriver ut på skärmen. Se flaggan <a class=\"reference internal\" href=\"/sv/5.2/ref/django-admin/#cmdoption-verbosity\"><code class=\"xref std std-option docutils literal notranslate\">--verbosity</code></a> för mer information.</p>\n<p>Funktioner som lyssnar efter <a class=\"reference internal\" href=\"#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> bör justera vad de matar ut på skärmen baserat på värdet av detta argument.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">interaktiv</code></dt><dd><p>Om <code class=\"docutils literal notranslate\">interactive</code> är <code class=\"docutils literal notranslate\">True</code> är det säkert att uppmana användaren att mata in saker på kommandoraden. Om <code class=\"docutils literal notranslate\">interactive</code> är <code class=\"docutils literal notranslate\">False</code> ska funktioner som lyssnar på denna signal inte försöka uppmana till något.</p>\n<p>Till exempel: uppmanar <a class=\"reference internal\" href=\"/sv/5.2/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>-appen bara till att skapa en superanvändare när <code class=\"docutils literal notranslate\">interactive</code> är <code class=\"docutils literal notranslate\">True</code>.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">stdout</code></dt><dd><p>Ett strömliknande objekt som kan användas för att omdirigera verbose-utdata.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">använder</code></dt><dd><p>Aliaset för den databas som ett kommando ska användas på.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">plan</code></dt><dd><p>Den migreringsplan som kommer att användas för migreringskörningen. Planen är inte ett publikt API, men detta möjliggör de sällsynta fall då det är nödvändigt att känna till planen. En plan är en lista med 2-tuples där det första objektet är en instans av en migreringsklass och det andra objektet visar om migreringen rullades tillbaka (<code class=\"docutils literal notranslate\">True</code>) eller tillämpades (<code class=\"docutils literal notranslate\">False</code>).</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">apps</code></dt><dd><p>En instans av <a class=\"reference internal\" href=\"/sv/5.2/ref/applications/#module-django.apps\" title=\"django.apps\"><code class=\"xref py py-data docutils literal notranslate\">Apps</code></a> som innehåller projektets tillstånd före migreringskörningen. Den bör användas i stället för det globala registret <a class=\"reference internal\" href=\"/sv/5.2/ref/applications/#django.apps.apps\" title=\"django.apps.apps\"><code class=\"xref py py-attr docutils literal notranslate\">apps</code></a> för att hämta de modeller som du vill utföra åtgärder på.</p>\n</dd>\n</dl>\n</section>\n<section id=\"post-migrate\">\n<h3><code class=\"docutils literal notranslate\">post_migrera</code><a class=\"heading-anchor\" href=\"#post-migrate\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.signals.post_migrate\">\n<span class=\"sig-prename descclassname\">django.db.models.signals.</span><span class=\"sig-name descname\">post_migrate</span><a class=\"heading-anchor\" href=\"#django.db.models.signals.post_migrate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Skickas i slutet av kommandona <a class=\"reference internal\" href=\"/sv/5.2/ref/django-admin/#django-admin-migrate\"><code class=\"xref std std-djadmin docutils literal notranslate\">migrate</code></a> (även om inga migreringar körs) och <a class=\"reference internal\" href=\"/sv/5.2/ref/django-admin/#django-admin-flush\"><code class=\"xref std std-djadmin docutils literal notranslate\">flush</code></a>. Det sänds inte ut för program som saknar en <code class=\"docutils literal notranslate\">models</code>-modul.</p>\n<p>Den som hanterar den här signalen får inte ändra databasscheman eftersom det kan leda till att kommandot <a class=\"reference internal\" href=\"/sv/5.2/ref/django-admin/#django-admin-flush\"><code class=\"xref std std-djadmin docutils literal notranslate\">flush</code></a> misslyckas om det körs under kommandot <a class=\"reference internal\" href=\"/sv/5.2/ref/django-admin/#django-admin-migrate\"><code class=\"xref std std-djadmin docutils literal notranslate\">migrate</code></a>.</p>\n<p>Argument som skickas med denna signal:</p>\n<dl>\n<dt>avsändare</dt><dd><p>En <a class=\"reference internal\" href=\"/sv/5.2/ref/applications/#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a>-instans för den applikation som just installerades.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">app_config</code></dt><dd><p>Samma som <code class=\"docutils literal notranslate\">avsändare</code>.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">verbosity</code></dt><dd><p>Anger hur mycket information <code class=\"docutils literal notranslate\">manage.py</code> skriver ut på skärmen. Se flaggan <a class=\"reference internal\" href=\"/sv/5.2/ref/django-admin/#cmdoption-verbosity\"><code class=\"xref std std-option docutils literal notranslate\">--verbosity</code></a> för mer information.</p>\n<p>Funktioner som lyssnar på <a class=\"reference internal\" href=\"#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> bör justera vad de matar ut på skärmen baserat på värdet av detta argument.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">interaktiv</code></dt><dd><p>Om <code class=\"docutils literal notranslate\">interactive</code> är <code class=\"docutils literal notranslate\">True</code> är det säkert att uppmana användaren att mata in saker på kommandoraden. Om <code class=\"docutils literal notranslate\">interactive</code> är <code class=\"docutils literal notranslate\">False</code> ska funktioner som lyssnar på denna signal inte försöka uppmana till något.</p>\n<p>Till exempel: uppmanar <a class=\"reference internal\" href=\"/sv/5.2/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>-appen bara till att skapa en superanvändare när <code class=\"docutils literal notranslate\">interactive</code> är <code class=\"docutils literal notranslate\">True</code>.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">stdout</code></dt><dd><p>Ett strömliknande objekt som kan användas för att omdirigera verbose-utdata.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">använder</code></dt><dd><p>Det databasalias som används för synkronisering. Standard är databasen <code class=\"docutils literal notranslate\">default</code>.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">plan</code></dt><dd><p>Den migreringsplan som användes för migreringskörningen. Planen är inte ett offentligt API, men detta möjliggör de sällsynta fall då det är nödvändigt att känna till planen. En plan är en lista med 2-tuples där det första objektet är en instans av en migreringsklass och det andra objektet visar om migreringen rullades tillbaka (<code class=\"docutils literal notranslate\">True</code>) eller tillämpades (<code class=\"docutils literal notranslate\">False</code>).</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">apps</code></dt><dd><p>En instans av <a class=\"reference internal\" href=\"/sv/5.2/ref/applications/#django.apps.apps\" title=\"django.apps.apps\"><code class=\"xref py py-data docutils literal notranslate\">Apps</code></a> som innehåller projektets tillstånd efter migreringskörningen. Den bör användas i stället för det globala registret <a class=\"reference internal\" href=\"/sv/5.2/ref/applications/#django.apps.apps\" title=\"django.apps.apps\"><code class=\"xref py py-attr docutils literal notranslate\">apps</code></a> för att hämta de modeller som du vill utföra åtgärder på.</p>\n</dd>\n</dl>\n<p>Du kan till exempel registrera en återuppringning i en <a class=\"reference internal\" href=\"/sv/5.2/ref/applications/#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a> 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.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> post_migrate\n\n\n<span class=\"k\">def</span> <span class=\"nf\">my_callback</span><span class=\"p\">(</span>sender<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n    <span class=\"c1\"># Your specific logic here</span>\n    <span class=\"k\">pass</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">MyAppConfig</span><span class=\"p\">(</span>AppConfig<span class=\"p\">):</span>\n    <span class=\"o\">...</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        post_migrate<span class=\"o\">.</span>connect<span class=\"p\">(</span>my_callback<span class=\"p\">,</span> sender<span class=\"o\">=</span><span class=\"bp\">self</span><span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Om du anger en <a class=\"reference internal\" href=\"/sv/5.2/ref/applications/#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a>-instans som avsändarargument, se till att signalen är registrerad i <a class=\"reference internal\" href=\"/sv/5.2/ref/applications/#django.apps.AppConfig.ready\" title=\"django.apps.AppConfig.ready\"><code class=\"xref py py-meth docutils literal notranslate\">ready()</code></a>. <code class=\"docutils literal notranslate\">AppConfig</code> återskapas för tester som körs med en modifierad uppsättning av <a class=\"reference internal\" href=\"/sv/5.2/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a> (t.ex. när inställningar åsidosätts) och sådana signaler bör anslutas för varje ny <code class=\"docutils literal notranslate\">AppConfig</code>-instans.</p>\n</aside>\n</section>\n</section>\n<section id=\"module-django.core.signals\">\n<span id=\"request-response-signals\"></span><h2>Signaler för begäran/svar<a class=\"heading-anchor\" href=\"#module-django.core.signals\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Signaler som skickas av kärnramverket när en begäran behandlas.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>Signaler kan göra din kod svårare att underhålla. Överväg <a class=\"reference internal\" href=\"/sv/5.2/topics/http/middleware/\"><span class=\"doc\">använda ett mellanprogram</span></a> innan du använder request/response-signaler.</p>\n</aside>\n<section id=\"request-started\">\n<h3><code class=\"docutils literal notranslate\">begäran_startad</code><a class=\"heading-anchor\" href=\"#request-started\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.core.signals.request_started\">\n<span class=\"sig-prename descclassname\">django.core.signals.</span><span class=\"sig-name descname\">request_started</span><a class=\"heading-anchor\" href=\"#django.core.signals.request_started\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Skickas när Django börjar bearbeta en HTTP-begäran.</p>\n<p>Argument som skickas med denna signal:</p>\n<dl class=\"simple\">\n<dt>avsändare</dt><dd><p>Hanteringsklassen - t.ex. <code class=\"docutils literal notranslate\">django.core.handlers.wsgi.WsgiHandler</code> - som hanterade begäran.</p>\n</dd>\n<dt>omgivning</dt><dd><p>Den ordbok för ”miljö” som tillhandahålls för begäran.</p>\n</dd>\n</dl>\n</section>\n<section id=\"request-finished\">\n<h3>”Begäran_avslutad<a class=\"heading-anchor\" href=\"#request-finished\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.core.signals.request_finished\">\n<span class=\"sig-prename descclassname\">django.core.signals.</span><span class=\"sig-name descname\">request_finished</span><a class=\"heading-anchor\" href=\"#django.core.signals.request_finished\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Skickas när Django avslutar leveransen av ett HTTP-svar till klienten.</p>\n<p>Argument som skickas med denna signal:</p>\n<dl class=\"simple\">\n<dt>avsändare</dt><dd><p>Hanterarklassen, som ovan.</p>\n</dd>\n</dl>\n</section>\n<section id=\"got-request-exception\">\n<h3>har fått undantag från begäran<a class=\"heading-anchor\" href=\"#got-request-exception\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.core.signals.got_request_exception\">\n<span class=\"sig-prename descclassname\">django.core.signals.</span><span class=\"sig-name descname\">got_request_exception</span><a class=\"heading-anchor\" href=\"#django.core.signals.got_request_exception\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Denna signal skickas när Django stöter på ett undantag under behandlingen av en inkommande HTTP-begäran.</p>\n<p>Argument som skickas med denna signal:</p>\n<dl class=\"simple\">\n<dt>avsändare</dt><dd><p>Oanvänd (alltid <code class=\"docutils literal notranslate\">None</code>).</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">begäran</code></dt><dd><p>Objektet <a class=\"reference internal\" href=\"/sv/5.2/ref/request-response/#django.http.HttpRequest\" title=\"django.http.HttpRequest\"><code class=\"xref py py-class docutils literal notranslate\">HttpRequest</code></a>.</p>\n</dd>\n</dl>\n</section>\n</section>\n<section id=\"module-django.test.signals\">\n<span id=\"test-signals\"></span><h2>Test av signaler<a class=\"heading-anchor\" href=\"#module-django.test.signals\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Signaler skickas endast när <a class=\"reference internal\" href=\"/sv/5.2/topics/testing/overview/#running-tests\"><span class=\"std std-ref\">kör tester</span></a>.</p>\n<section id=\"setting-changed\">\n<h3><code class=\"docutils literal notranslate\">inställning_ändrad</code><a class=\"heading-anchor\" href=\"#setting-changed\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.test.signals.setting_changed\">\n<span class=\"sig-prename descclassname\">django.test.signals.</span><span class=\"sig-name descname\">setting_changed</span><a class=\"heading-anchor\" href=\"#django.test.signals.setting_changed\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Denna signal skickas när värdet på en inställning ändras via kontexthanteraren <code class=\"docutils literal notranslate\">django.test.TestCase.settings()</code> eller <a class=\"reference internal\" href=\"/sv/5.2/topics/testing/tools/#django.test.override_settings\" title=\"django.test.override_settings\"><code class=\"xref py py-func docutils literal notranslate\">django.test.override_settings()</code></a> dekorator/kontexthanteraren.</p>\n<p>Det skickas faktiskt två gånger: när det nya värdet tillämpas (”setup”) och när det ursprungliga värdet återställs (”teardown”). Använd argumentet <code class=\"docutils literal notranslate\">enter</code> för att skilja mellan de två.</p>\n<p>Du kan också importera den här signalen från <code class=\"docutils literal notranslate\">django.core.signals</code> för att undvika import från <code class=\"docutils literal notranslate\">django.test</code> i situationer som inte är test.</p>\n<p>Argument som skickas med denna signal:</p>\n<dl class=\"simple\">\n<dt>avsändare</dt><dd><p>Inställningshanteraren.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">inställning</code></dt><dd><p>Namnet på inställningen.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">värde</code></dt><dd><p>Värdet på inställningen efter ändringen. För inställningar som ursprungligen inte finns, i fasen ”teardown”, är <code class=\"docutils literal notranslate\">value</code> <code class=\"docutils literal notranslate\">None</code>.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">enter</code></dt><dd><p>En boolean; <code class=\"docutils literal notranslate\">True</code> om inställningen tillämpas, <code class=\"docutils literal notranslate\">False</code> om den återställs.</p>\n</dd>\n</dl>\n</section>\n<section id=\"template-rendered\">\n<h3><code class=\"docutils literal notranslate\">template_rendered</code><a class=\"heading-anchor\" href=\"#template-rendered\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.test.signals.template_rendered\">\n<span class=\"sig-prename descclassname\">django.test.signals.</span><span class=\"sig-name descname\">template_rendered</span><a class=\"heading-anchor\" href=\"#django.test.signals.template_rendered\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Skickas när testsystemet renderar en mall. Denna signal sänds inte ut under normal drift av en Django-server - den är endast tillgänglig under testning.</p>\n<p>Argument som skickas med denna signal:</p>\n<dl class=\"simple\">\n<dt>avsändare</dt><dd><p>Objektet <a class=\"reference internal\" href=\"/sv/5.2/ref/templates/api/#django.template.Template\" title=\"django.template.Template\"><code class=\"xref py py-class docutils literal notranslate\">Template</code></a> som renderades.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">mall</code></dt><dd><p>Samma som avsändaren</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">kontext</code></dt><dd><p>Den <a class=\"reference internal\" href=\"/sv/5.2/ref/templates/api/#django.template.Context\" title=\"django.template.Context\"><code class=\"xref py py-class docutils literal notranslate\">Context</code></a> med vilken mallen renderades.</p>\n</dd>\n</dl>\n</section>\n</section>\n<section id=\"module-django.db.backends\">\n<span id=\"database-wrappers\"></span><h2>Databas-omslag<a class=\"heading-anchor\" href=\"#module-django.db.backends\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Signaler som skickas av databasomslaget när en databasanslutning initieras.</p>\n<section id=\"connection-created\">\n<h3><code class=\"docutils literal notranslate\">anslutning_skapad</code><a class=\"heading-anchor\" href=\"#connection-created\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py data\">\n<dt class=\"sig sig-object py\" id=\"django.db.backends.signals.connection_created\">\n<span class=\"sig-prename descclassname\">django.db.backends.signals.</span><span class=\"sig-name descname\">connection_created</span><a class=\"heading-anchor\" href=\"#django.db.backends.signals.connection_created\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Skickas när databasomslaget gör den första anslutningen till databasen.  Detta är särskilt användbart om du vill skicka kommandon efter anslutningen till SQL-backend.</p>\n<p>Argument som skickas med denna signal:</p>\n<dl class=\"simple\">\n<dt>avsändare</dt><dd><p>Databasens omslagsklass - t.ex. <code class=\"docutils literal notranslate\">django.db.backends.postgresql.DatabaseWrapper</code> eller <code class=\"docutils literal notranslate\">django.db.backends.mysql.DatabaseWrapper</code>, etc.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">anslutning</code></dt><dd><p>Den databasanslutning som öppnades. Detta kan användas i en konfiguration med flera databaser för att skilja på anslutningssignaler från olika databaser.</p>\n</dd>\n</dl>\n</section>\n</section>","rootId":"signals","toc":[{"title":"Modellsignaler","anchor":"module-django.db.models.signals","children":[{"title":"pre_init","anchor":"pre-init","children":[]},{"title":"post_init","anchor":"post-init","children":[]},{"title":"pre_save","anchor":"pre-save","children":[]},{"title":"post_save","anchor":"post-save","children":[]},{"title":"pre_delete","anchor":"pre-delete","children":[]},{"title":"post_delete","anchor":"post-delete","children":[]},{"title":"m2m_changed","anchor":"m2m-changed","children":[]},{"title":"klass_förberedd","anchor":"class-prepared","children":[]}]},{"title":"Ledningens signaler","anchor":"management-signals","children":[{"title":"pre_migrate","anchor":"pre-migrate","children":[]},{"title":"post_migrera","anchor":"post-migrate","children":[]}]},{"title":"Signaler för begäran/svar","anchor":"module-django.core.signals","children":[{"title":"begäran_startad","anchor":"request-started","children":[]},{"title":"”Begäran_avslutad","anchor":"request-finished","children":[]},{"title":"har fått undantag från begäran","anchor":"got-request-exception","children":[]}]},{"title":"Test av signaler","anchor":"module-django.test.signals","children":[{"title":"inställning_ändrad","anchor":"setting-changed","children":[]},{"title":"template_rendered","anchor":"template-rendered","children":[]}]},{"title":"Databas-omslag","anchor":"module-django.db.backends","children":[{"title":"anslutning_skapad","anchor":"connection-created","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"API-referens","url":"/sv/5.2/ref/"}],"prev":{"docname":"ref/settings","title":"Inställningar","url":"/sv/5.2/ref/settings/"},"next":{"docname":"ref/templates/index","title":"Mallar","url":"/sv/5.2/ref/templates/"},"formats":{"html":"/sv/5.2/ref/signals/","markdown":"/sv/5.2/ref/signals.md","json":"/sv/5.2/ref/signals.json"},"source":"https://github.com/django/django/blob/stable/5.2.x/docs/ref/signals.txt","official":"https://docs.djangoproject.com/sv/5.2/ref/signals/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}