{"title":"Relaterade objekt referens","version":"5.2","locale":"sv","docname":"ref/models/relations","url":"/sv/5.2/ref/models/relations/","canonical":"https://djangodocs.dev/sv/5.2/ref/models/relations/","summary":"En ”relaterad manager” är en manager som används i ett relaterat sammanhang en-till-många eller många-till-många.","html":"<h1>Relaterade objekt referens<a class=\"heading-anchor\" href=\"#related-objects-reference\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.fields.related.RelatedManager\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">RelatedManager</span><a class=\"heading-anchor\" href=\"#django.db.models.fields.related.RelatedManager\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>En ”relaterad manager” är en manager som används i ett relaterat sammanhang en-till-många eller många-till-många. Detta sker i två fall:</p>\n<ul>\n<li><p>Den ”andra sidan” av en <a class=\"reference internal\" href=\"/sv/5.2/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a>-relation. Det vill säga:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Blog</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\">Entry</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    blog <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>Blog<span class=\"p\">,</span> on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">,</span> null<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>I exemplet ovan kommer metoderna nedan att vara tillgängliga för förvaltaren <code class=\"docutils literal notranslate\">blog.entry_set</code>.</p>\n</li>\n<li><p>Båda sidor av 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> relation</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    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>I det här exemplet kommer metoderna nedan att vara tillgängliga både på <code class=\"docutils literal notranslate\">topping.pizza_set</code> och på <code class=\"docutils literal notranslate\">pizza.toppings</code>.</p>\n</li>\n</ul>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.fields.related.RelatedManager.add\">\n<span class=\"sig-name descname\">add</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>objs</em>, <em class=\"sig-param\">bulk<span class=\"o\">=</span><span class=\"default_value\">True</span></em>, <em class=\"sig-param\">through_defaults<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.fields.related.RelatedManager.add\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.fields.related.RelatedManager.aadd\">\n<span class=\"sig-name descname\">aadd</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>objs</em>, <em class=\"sig-param\">bulk<span class=\"o\">=</span><span class=\"default_value\">True</span></em>, <em class=\"sig-param\">through_defaults<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.fields.related.RelatedManager.aadd\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">aadd</code></p>\n<p>Lägger till de angivna modellobjekten i den relaterade objektuppsättningen.</p>\n<p>Exempel:</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>b <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>e <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">234</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>b<span class=\"o\">.</span>entry_set<span class=\"o\">.</span>add<span class=\"p\">(</span>e<span class=\"p\">)</span>  <span class=\"c1\"># Associates Entry e with Blog b.</span>\n</code></pre></div>\n<p>I exemplet ovan, när det gäller en <a class=\"reference internal\" href=\"/sv/5.2/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a>-relation, används <a class=\"reference internal\" href=\"/sv/5.2/ref/models/querysets/#django.db.models.query.QuerySet.update\" title=\"django.db.models.query.QuerySet.update\"><code class=\"xref py py-meth docutils literal notranslate\">QuerySet.update()</code></a> för att utföra uppdateringen. Detta kräver att objekten redan är sparade.</p>\n<p>Du kan använda argumentet <code class=\"docutils literal notranslate\">bulk=False</code> för att istället låta den relaterade hanteraren utföra uppdateringen genom att anropa <code class=\"docutils literal notranslate\">e.save()</code>.</p>\n<p>Om du använder <code class=\"docutils literal notranslate\">add()</code> med en many-to-many-relation kommer dock inga <code class=\"docutils literal notranslate\">save()</code>-metoder att anropas (argumentet <code class=\"docutils literal notranslate\">bulk</code> finns inte), utan relationerna skapas med <a class=\"reference internal\" href=\"/sv/5.2/ref/models/querysets/#django.db.models.query.QuerySet.bulk_create\" title=\"django.db.models.query.QuerySet.bulk_create\"><code class=\"xref py py-meth docutils literal notranslate\">QuerySet.bulk_create()</code></a>. Om du behöver köra någon anpassad logik när en relation skapas, lyssna på <a class=\"reference internal\" href=\"/sv/5.2/ref/signals/#django.db.models.signals.m2m_changed\" title=\"django.db.models.signals.m2m_changed\"><code class=\"xref py py-data docutils literal notranslate\">m2m_changed</code></a>-signalen, som kommer att utlösa <code class=\"docutils literal notranslate\">pre_add</code> och <code class=\"docutils literal notranslate\">post_add</code>-åtgärder.</p>\n<p>Om du använder <code class=\"docutils literal notranslate\">add()</code> på en relation som redan finns kommer relationen inte att dupliceras, men den kommer fortfarande att utlösa signaler.</p>\n<p>För många-till-många-relationer accepterar <code class=\"docutils literal notranslate\">add()</code> antingen modellinstanser eller fältvärden, normalt primärnycklar, som argumentet <code class=\"docutils literal notranslate\">*objs</code>.</p>\n<p>Använd argumentet <code class=\"docutils literal notranslate\">through_defaults</code> för att ange värden för den nya <a class=\"reference internal\" href=\"/sv/5.2/topics/db/models/#intermediary-manytomany\"><span class=\"std std-ref\">intermediate model</span></a>-instansen (instanserna), om det behövs. Du kan använda callables som värden i ordlistan <code class=\"docutils literal notranslate\">through_defaults</code> och de kommer att utvärderas en gång innan någon eller några mellanliggande instanser skapas.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.fields.related.RelatedManager.create\">\n<span class=\"sig-name descname\">create</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">through_defaults<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.fields.related.RelatedManager.create\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.fields.related.RelatedManager.acreate\">\n<span class=\"sig-name descname\">acreate</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">through_defaults<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.fields.related.RelatedManager.acreate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">acreate</code></p>\n<p>Skapar ett nytt objekt, sparar det och lägger till det i den relaterade objektuppsättningen. Returnerar det nyskapade objektet:</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>b <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>e <span class=\"o\">=</span> b<span class=\"o\">.</span>entry_set<span class=\"o\">.</span>create<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    headline<span class=\"o\">=</span><span class=\"s2\">&quot;Hello&quot;</span><span class=\"p\">,</span> body_text<span class=\"o\">=</span><span class=\"s2\">&quot;Hi&quot;</span><span class=\"p\">,</span> pub_date<span class=\"o\">=</span>datetime<span class=\"o\">.</span>date<span class=\"p\">(</span><span class=\"mi\">2005</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n\n<span class=\"go\"># No need to call e.save() at this point -- it&#39;s already been saved.</span>\n</code></pre></div>\n<p>Detta är likvärdigt med (men enklare än):</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>b <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>e <span class=\"o\">=</span> Entry<span class=\"p\">(</span>blog<span class=\"o\">=</span>b<span class=\"p\">,</span> headline<span class=\"o\">=</span><span class=\"s2\">&quot;Hello&quot;</span><span class=\"p\">,</span> body_text<span class=\"o\">=</span><span class=\"s2\">&quot;Hi&quot;</span><span class=\"p\">,</span> pub_date<span class=\"o\">=</span>datetime<span class=\"o\">.</span>date<span class=\"p\">(</span><span class=\"mi\">2005</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>e<span class=\"o\">.</span>save<span class=\"p\">(</span>force_insert<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Observera att det inte finns något behov av att ange nyckelordsargumentet för den modell som definierar relationen. I exemplet ovan skickar vi inte parametern <code class=\"docutils literal notranslate\">blog</code> till <code class=\"docutils literal notranslate\">create()</code>. Django räknar ut att det nya <code class=\"docutils literal notranslate\">Entry</code>-objektets <code class=\"docutils literal notranslate\">blog</code>-fält ska sättas till <code class=\"docutils literal notranslate\">b</code>.</p>\n<p>Använd argumentet <code class=\"docutils literal notranslate\">through_defaults</code> för att ange värden för den nya instansen <a class=\"reference internal\" href=\"/sv/5.2/topics/db/models/#intermediary-manytomany\"><span class=\"std std-ref\">intermediate model</span></a>, om det behövs. Du kan använda callables som värden i ordlistan <code class=\"docutils literal notranslate\">through_defaults</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.fields.related.RelatedManager.remove\">\n<span class=\"sig-name descname\">remove</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>objs</em>, <em class=\"sig-param\">bulk<span class=\"o\">=</span><span class=\"default_value\">True</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.fields.related.RelatedManager.remove\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.fields.related.RelatedManager.aremove\">\n<span class=\"sig-name descname\">aremove</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>objs</em>, <em class=\"sig-param\">bulk<span class=\"o\">=</span><span class=\"default_value\">True</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.fields.related.RelatedManager.aremove\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">aremove</code></p>\n<p>Tar bort de angivna modellobjekten från den relaterade objektuppsättningen:</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>b <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>e <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">234</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>b<span class=\"o\">.</span>entry_set<span class=\"o\">.</span>remove<span class=\"p\">(</span>e<span class=\"p\">)</span>  <span class=\"c1\"># Disassociates Entry e from Blog b.</span>\n</code></pre></div>\n<p>I likhet med <a class=\"reference internal\" href=\"#django.db.models.fields.related.RelatedManager.add\" title=\"django.db.models.fields.related.RelatedManager.add\"><code class=\"xref py py-meth docutils literal notranslate\">add()</code></a> anropas <code class=\"docutils literal notranslate\">e.save()</code> i exemplet ovan för att utföra uppdateringen. Om du använder <code class=\"docutils literal notranslate\">remove()</code> med en många-till-många-relation raderas dock relationerna med <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\">QuerySet.delete()</code></a> vilket innebär att inga <code class=\"docutils literal notranslate\">save()</code>-metoder anropas; lyssna på <a class=\"reference internal\" href=\"/sv/5.2/ref/signals/#django.db.models.signals.m2m_changed\" title=\"django.db.models.signals.m2m_changed\"><code class=\"xref py py-data docutils literal notranslate\">m2m_changed</code></a>-signalen om du vill köra anpassad kod när en relation raderas.</p>\n<p>För många-till-många-relationer accepterar <code class=\"docutils literal notranslate\">remove()</code> antingen modellinstanser eller fältvärden, normalt primärnycklar, som argumentet <code class=\"docutils literal notranslate\">*objs</code>.</p>\n<p>För <a class=\"reference internal\" href=\"/sv/5.2/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a>-objekt finns denna metod endast om <code class=\"docutils literal notranslate\">null=True</code>. Om det relaterade fältet inte kan sättas till <code class=\"docutils literal notranslate\">None</code> (<code class=\"docutils literal notranslate\">NULL</code>), kan ett objekt inte tas bort från en relation utan att läggas till i en annan. I exemplet ovan är att ta bort <code class=\"docutils literal notranslate\">e</code> från <code class=\"docutils literal notranslate\">b.entry_set()</code> likvärdigt med att göra <code class=\"docutils literal notranslate\">e.blog = None</code>, och eftersom <code class=\"docutils literal notranslate\">blog</code> <a class=\"reference internal\" href=\"/sv/5.2/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> inte har <code class=\"docutils literal notranslate\">null=True</code> är detta ogiltigt.</p>\n<p>För <a class=\"reference internal\" href=\"/sv/5.2/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a>-objekt accepterar denna metod ett <code class=\"docutils literal notranslate\">bulk</code>-argument för att styra hur operationen ska utföras. Om <code class=\"docutils literal notranslate\">True</code> (standard) används <code class=\"docutils literal notranslate\">QuerySet.update()</code>. Om <code class=\"docutils literal notranslate\">bulk=False</code> anropas istället metoden <code class=\"docutils literal notranslate\">save()</code> för varje enskild modellinstans. Detta utlöser signalerna <a class=\"reference internal\" href=\"/sv/5.2/ref/signals/#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> och <a class=\"reference internal\" href=\"/sv/5.2/ref/signals/#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 sker på bekostnad av prestanda.</p>\n<p>För många-till-många-relationer finns inte nyckelordsargumentet <code class=\"docutils literal notranslate\">bulk</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.fields.related.RelatedManager.clear\">\n<span class=\"sig-name descname\">clear</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">bulk<span class=\"o\">=</span><span class=\"default_value\">True</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.fields.related.RelatedManager.clear\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.fields.related.RelatedManager.aclear\">\n<span class=\"sig-name descname\">aclear</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">bulk<span class=\"o\">=</span><span class=\"default_value\">True</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.fields.related.RelatedManager.aclear\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">aclear</code></p>\n<p>Tar bort alla objekt från den relaterade objektuppsättningen:</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>b <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>b<span class=\"o\">.</span>entry_set<span class=\"o\">.</span>clear<span class=\"p\">()</span>\n</code></pre></div>\n<p>Observera att detta inte raderar de relaterade objekten - de kopplas bara isär.</p>\n<p>Precis som <code class=\"docutils literal notranslate\">remove()</code> är <code class=\"docutils literal notranslate\">clear()</code> endast tillgänglig på <code class=\"xref py py-class docutils literal notranslate\">ForeignKey`</code> där <code class=\"docutils literal notranslate\">null=True</code> och den accepterar också nyckelordsargumentet <code class=\"docutils literal notranslate\">bulk</code>.</p>\n<p>För många-till-många-relationer finns inte nyckelordsargumentet <code class=\"docutils literal notranslate\">bulk</code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.fields.related.RelatedManager.set\">\n<span class=\"sig-name descname\">set</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">objs</em>, <em class=\"sig-param\">bulk<span class=\"o\">=</span><span class=\"default_value\">True</span></em>, <em class=\"sig-param\">clear<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">through_defaults<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.fields.related.RelatedManager.set\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.fields.related.RelatedManager.aset\">\n<span class=\"sig-name descname\">aset</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">objs</em>, <em class=\"sig-param\">bulk<span class=\"o\">=</span><span class=\"default_value\">True</span></em>, <em class=\"sig-param\">clear<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">through_defaults<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.fields.related.RelatedManager.aset\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">aset</code></p>\n<p>Byt ut uppsättningen av relaterade objekt:</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>new_list <span class=\"o\">=</span> <span class=\"p\">[</span>obj1<span class=\"p\">,</span> obj2<span class=\"p\">,</span> obj3<span class=\"p\">]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>e<span class=\"o\">.</span>related_set<span class=\"o\">.</span>set<span class=\"p\">(</span>new_list<span class=\"p\">)</span>\n</code></pre></div>\n<p>Denna metod accepterar ett <code class=\"docutils literal notranslate\">clear</code>-argument för att styra hur operationen ska utföras. Om <code class=\"docutils literal notranslate\">False</code> (standard), tas de element som saknas i den nya uppsättningen bort med <code class=\"docutils literal notranslate\">remove()</code> och endast de nya läggs till. Om <code class=\"docutils literal notranslate\">clear=True</code> anropas istället metoden <code class=\"docutils literal notranslate\">clear()</code> och hela uppsättningen läggs till på en gång.</p>\n<p>För <a class=\"reference internal\" href=\"/sv/5.2/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a>-objekt skickas <code class=\"docutils literal notranslate\">bulk</code>-argumentet vidare till <a class=\"reference internal\" href=\"#django.db.models.fields.related.RelatedManager.add\" title=\"django.db.models.fields.related.RelatedManager.add\"><code class=\"xref py py-meth docutils literal notranslate\">add()</code></a> och <a class=\"reference internal\" href=\"#django.db.models.fields.related.RelatedManager.remove\" title=\"django.db.models.fields.related.RelatedManager.remove\"><code class=\"xref py py-meth docutils literal notranslate\">remove()</code></a>.</p>\n<p>För många-till-många-relationer finns inte nyckelordsargumentet <code class=\"docutils literal notranslate\">bulk</code>.</p>\n<p>Observera att eftersom <code class=\"docutils literal notranslate\">set()</code> är en sammansatt operation kan den vara föremål för tävlingsvillkor. Exempelvis kan nya objekt läggas till i databasen mellan anropet till <code class=\"docutils literal notranslate\">clear()</code> och anropet till <code class=\"docutils literal notranslate\">add()</code>.</p>\n<p>För många-till-många-relationer accepterar <code class=\"docutils literal notranslate\">set()</code> en lista med antingen modellinstanser eller fältvärden, normalt primärnycklar, som <code class=\"docutils literal notranslate\">objs</code>-argument.</p>\n<p>Använd argumentet <code class=\"docutils literal notranslate\">through_defaults</code> för att ange värden för den nya <a class=\"reference internal\" href=\"/sv/5.2/topics/db/models/#intermediary-manytomany\"><span class=\"std std-ref\">intermediate model</span></a>-instansen (instanserna), om det behövs. Du kan använda callables som värden i ordlistan <code class=\"docutils literal notranslate\">through_defaults</code> och de kommer att utvärderas en gång innan någon eller några mellanliggande instanser skapas.</p>\n</dd></dl>\n\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Observera att <code class=\"docutils literal notranslate\">add()</code>, <code class=\"docutils literal notranslate\">aadd()</code>, <code class=\"docutils literal notranslate\">create()</code>, <code class=\"docutils literal notranslate\">acreate()</code>, <code class=\"docutils literal notranslate\">remove()</code>, <code class=\"docutils literal notranslate\">aremove()</code>, <code class=\"docutils literal notranslate\">clear()</code>, <code class=\"docutils literal notranslate\">aclear()</code>, <code class=\"docutils literal notranslate\">set()</code> och <code class=\"docutils literal notranslate\">aset()</code> alla tillämpar databasändringar omedelbart för alla typer av relaterade fält. Med andra ord behöver du inte anropa <code class=\"docutils literal notranslate\">save()</code>/asave()` i någon av ändarna av relationen.</p>\n<p>Om du använder <a class=\"reference internal\" href=\"/sv/5.2/ref/models/querysets/#django.db.models.query.QuerySet.prefetch_related\" title=\"django.db.models.query.QuerySet.prefetch_related\"><code class=\"xref py py-meth docutils literal notranslate\">prefetch_related()</code></a>, rensar metoderna <code class=\"docutils literal notranslate\">add()</code>, <code class=\"docutils literal notranslate\">aadd()</code>, <code class=\"docutils literal notranslate\">remove()</code>, <code class=\"docutils literal notranslate\">aremove()</code>, <code class=\"docutils literal notranslate\">clear()</code>, <code class=\"docutils literal notranslate\">aclear()</code>, <code class=\"docutils literal notranslate\">set()</code> och <code class=\"docutils literal notranslate\">aset()</code> den prefetchade cachen.</p>\n</aside>\n</dd></dl>","rootId":"related-objects-reference","toc":[],"breadcrumbs":[{"docname":"ref/index","title":"API-referens","url":"/sv/5.2/ref/"},{"docname":"ref/models/index","title":"Modeller","url":"/sv/5.2/ref/models/"}],"prev":{"docname":"ref/models/meta","title":"Modell _meta API","url":"/sv/5.2/ref/models/meta/"},"next":{"docname":"ref/models/class","title":"Referens till modellklass","url":"/sv/5.2/ref/models/class/"},"formats":{"html":"/sv/5.2/ref/models/relations/","markdown":"/sv/5.2/ref/models/relations.md","json":"/sv/5.2/ref/models/relations.json"},"source":"https://github.com/django/django/blob/stable/5.2.x/docs/ref/models/relations.txt","official":"https://docs.djangoproject.com/sv/5.2/ref/models/relations/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}