{"title":"aPI-referens för QuerySet","version":"6.1","locale":"sv","docname":"ref/models/querysets","url":"/sv/6.1/ref/models/querysets/","canonical":"https://djangodocs.dev/sv/6.1/ref/models/querysets/","summary":"Detta dokument beskriver detaljerna i API:et QuerySet. Det bygger på det material som presenteras i guiderna model och database query, så du vill…","html":"<h1>aPI-referens för <code class=\"docutils literal notranslate\">QuerySet</code><a class=\"heading-anchor\" href=\"#queryset-api-reference\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Detta dokument beskriver detaljerna i API:et <code class=\"docutils literal notranslate\">QuerySet</code>. Det bygger på det material som presenteras i guiderna <a class=\"reference internal\" href=\"/sv/6.1/topics/db/models/\"><span class=\"doc\">model</span></a> och <a class=\"reference internal\" href=\"/sv/6.1/topics/db/queries/\"><span class=\"doc\">database query</span></a>, så du vill förmodligen läsa och förstå dessa dokument innan du läser det här.</p>\n<p>I den här referensen använder vi <a class=\"reference internal\" href=\"/sv/6.1/topics/db/queries/#queryset-model-example\"><span class=\"std std-ref\">exempel på bloggmodeller</span></a> som presenteras i <a class=\"reference internal\" href=\"/sv/6.1/topics/db/queries/\"><span class=\"doc\">guide för databasfrågor</span></a>.</p>\n<section id=\"when-querysets-are-evaluated\">\n<span id=\"id1\"></span><h2>När <code class=\"docutils literal notranslate\">QuerySet</code> utvärderas<a class=\"heading-anchor\" href=\"#when-querysets-are-evaluated\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Internt kan en <code class=\"docutils literal notranslate\">QuerySet</code> konstrueras, filtreras, skivas och i allmänhet skickas runt utan att faktiskt träffa databasen. Ingen databasaktivitet sker faktiskt förrän du gör något för att utvärdera queryset.</p>\n<p>Du kan utvärdera en <code class=\"docutils literal notranslate\">QuerySet</code> på följande sätt:</p>\n<ul>\n<li><p><a href=\"#id1\"><span class=\"problematic\" id=\"id2\">**</span></a>En <code class=\"docutils literal notranslate\">QuerySet</code> är itererbar och den utför sin databasfråga första gången du itererar över den. Till exempel: kommer detta att skriva ut rubriken på alla poster i databasen:</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\">for</span> e <span class=\"ow\">in</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">():</span>\n    <span class=\"nb\">print</span><span class=\"p\">(</span>e<span class=\"o\">.</span>headline<span class=\"p\">)</span>\n</code></pre></div>\n<p>Observera: Använd inte detta om allt du vill göra är att avgöra om minst ett resultat finns. Det är mer effektivt att använda <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.exists\" title=\"django.db.models.query.QuerySet.exists\"><code class=\"xref py py-meth docutils literal notranslate\">exists()</code></a>.</p>\n</li>\n<li><p><a href=\"#id1\"><span class=\"problematic\" id=\"id2\">**</span></a>En <code class=\"docutils literal notranslate\">QuerySet</code> kan också itereras över med hjälp av <code class=\"docutils literal notranslate\">async for</code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">async</span> <span class=\"k\">for</span> e <span class=\"ow\">in</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">():</span>\n    results<span class=\"o\">.</span>append<span class=\"p\">(</span>e<span class=\"p\">)</span>\n</code></pre></div>\n<p>Både synkrona och asynkrona iteratorer av QuerySets delar samma underliggande cache.</p>\n</li>\n<li><p><a href=\"#id1\"><span class=\"problematic\" id=\"id2\">**</span></a>Som förklaras i <a class=\"reference internal\" href=\"/sv/6.1/topics/db/queries/#limiting-querysets\"><span class=\"std std-ref\">Begränsning av QuerySet</span></a>, kan en <code class=\"docutils literal notranslate\">QuerySet</code> skivas med hjälp av Pythons syntax för array-skivning. Att skiva en ovärderad <code class=\"docutils literal notranslate\">QuerySet</code> returnerar vanligtvis en annan ovärderad <code class=\"docutils literal notranslate\">QuerySet</code>, men Django kommer att utföra databasförfrågan om du använder parametern ”step” i slice-syntaxen och returnerar en lista. Att skära en <code class=\"docutils literal notranslate\">QuerySet</code> som har utvärderats returnerar också en lista.</p>\n<p>Observera också att även om slicing av en ovärderad <code class=\"docutils literal notranslate\">QuerySet</code> returnerar en annan ovärderad <code class=\"docutils literal notranslate\">QuerySet</code>, är det inte tillåtet att modifiera den ytterligare (t.ex. lägga till fler filter eller ändra ordningen), eftersom det inte översätts bra till SQL och det skulle inte heller ha en tydlig mening.</p>\n</li>\n<li><p><strong>Pickling/Caching.</strong> Se följande avsnitt för detaljer om vad som gäller vid ”picking” av QuerySets. Det viktiga i det här avsnittet är att resultaten läses från databasen.</p></li>\n<li><p><strong>repr().</strong> En <code class=\"docutils literal notranslate\">QuerySet</code> utvärderas när du anropar <code class=\"docutils literal notranslate\">repr().</code> på den. Detta är för enkelhetens skull i Pythons interaktiva tolk, så att du omedelbart kan se dina resultat när du använder API:et interaktivt.</p></li>\n<li><p><strong>len().</strong> En <code class=\"docutils literal notranslate\">QuerySet</code> utvärderas när du anropar <code class=\"docutils literal notranslate\">len()</code> på den. Detta returnerar, som du kanske förväntar dig, längden på resultatlistan.</p>\n<p>Obs: Om du bara behöver bestämma antalet poster i uppsättningen (och inte behöver de faktiska objekten) är det mycket effektivare att hantera en räkning på databasnivå med SQL: s <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>SELECT COUNT(*) <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>. Django tillhandahåller en <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.count\" title=\"django.db.models.query.QuerySet.count\"><code class=\"xref py py-meth docutils literal notranslate\">count()</code></a>-metod av just denna anledning.</p>\n</li>\n<li><p><strong>list().</strong> Tvinga fram utvärdering av en <code class=\"docutils literal notranslate\">QuerySet</code> genom att anropa <code class=\"docutils literal notranslate\">list().</code> på den. Till exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>entry_list <span class=\"o\">=</span> <span class=\"nb\">list</span><span class=\"p\">(</span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">())</span>\n</code></pre></div>\n</li>\n<li><p><strong>bool().</strong> Om en <code class=\"docutils literal notranslate\">QuerySet</code> testas i ett booleskt sammanhang, t.ex. med <code class=\"docutils literal notranslate\">bool().</code>, <code class=\"docutils literal notranslate\">or</code>, <code class=\"docutils literal notranslate\">and</code> eller en <code class=\"docutils literal notranslate\">if</code>-sats, kommer frågan att utföras. Om det finns minst ett resultat är <code class=\"docutils literal notranslate\">QuerySet</code> <code class=\"docutils literal notranslate\">True</code>, annars <code class=\"docutils literal notranslate\">False</code>. Till exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">if</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>headline<span class=\"o\">=</span><span class=\"s2\">&quot;Test&quot;</span><span class=\"p\">):</span>\n    <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"s2\">&quot;There is at least one Entry with the headline Test&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Observera: Om du bara vill avgöra om minst ett resultat finns (och inte behöver de faktiska objekten) är det effektivare att använda <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.exists\" title=\"django.db.models.query.QuerySet.exists\"><code class=\"xref py py-meth docutils literal notranslate\">exists()</code></a>.</p>\n</li>\n</ul>\n<section id=\"pickling-querysets\">\n<span id=\"id2\"></span><h3>Inläggning av ”QuuerySet<a class=\"heading-anchor\" href=\"#pickling-querysets\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Om du <a class=\"reference external\" href=\"https://docs.python.org/3/library/pickle.html#module-pickle\" title=\"(in Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\">pickle</code></a> en <code class=\"docutils literal notranslate\">QuerySet</code>, kommer detta att tvinga alla resultat att laddas in i minnet före pickling. Pickling används vanligtvis som en föregångare till cachelagring och när det cachade querysetet laddas om vill du att resultaten redan ska finnas och vara redo att användas (att läsa från databasen kan ta lite tid, vilket motverkar syftet med cachelagring). Detta innebär att när du plockar upp en <code class=\"docutils literal notranslate\">QuerySet</code> innehåller den resultaten vid den tidpunkt då den plockades upp, snarare än de resultat som för närvarande finns i databasen.</p>\n<p>Om du bara vill plocka ut den information som behövs för att återskapa <code class=\"docutils literal notranslate\">QuerySet</code> från databasen vid ett senare tillfälle, plockar du ut <code class=\"docutils literal notranslate\">query</code>-attributet för <code class=\"docutils literal notranslate\">QuerySet</code>. Du kan sedan återskapa den ursprungliga <code class=\"docutils literal notranslate\">QuerySet</code> (utan några resultat laddade) med hjälp av någon kod som denna:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">import</span> <span class=\"nn\">pickle</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>query <span class=\"o\">=</span> pickle<span class=\"o\">.</span>loads<span class=\"p\">(</span>s<span class=\"p\">)</span>  <span class=\"c1\"># Assuming &#39;s&#39; is the pickled string.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>qs <span class=\"o\">=</span> MyModel<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>qs<span class=\"o\">.</span>query <span class=\"o\">=</span> query  <span class=\"c1\"># Restore the original &#39;query&#39;.</span>\n</code></pre></div>\n<p>Attributet <code class=\"docutils literal notranslate\">query</code> är ett opakt objekt. Det representerar det interna i query-konstruktionen och är inte en del av det publika API:et. Det är dock säkert (och stöds fullt ut) att plocka ut och plocka in attributets innehåll enligt beskrivningen här.</p>\n<aside class=\"admonition-restrictions-on-queryset-values-list admonition\" role=\"note\">\n<p class=\"admonition-title\">Begränsningar för <code class=\"docutils literal notranslate\">QuerySet.values_list()</code></p>\n<p>Om du återskapar <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.values_list\" title=\"django.db.models.query.QuerySet.values_list\"><code class=\"xref py py-meth docutils literal notranslate\">QuerySet.values_list()</code></a> med det inlagda <code class=\"docutils literal notranslate\">query</code>-attributet kommer det att konverteras till <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.values\" title=\"django.db.models.query.QuerySet.values\"><code class=\"xref py py-meth docutils literal notranslate\">QuerySet.values()</code></a>:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">import</span> <span class=\"nn\">pickle</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>qs <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>values_list<span class=\"p\">(</span><span class=\"s2\">&quot;id&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;name&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>qs\n<span class=\"go\">&lt;QuerySet [(1, &#39;Beatles Blog&#39;)]&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>reloaded_qs <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>reloaded_qs<span class=\"o\">.</span>query <span class=\"o\">=</span> pickle<span class=\"o\">.</span>loads<span class=\"p\">(</span>pickle<span class=\"o\">.</span>dumps<span class=\"p\">(</span>qs<span class=\"o\">.</span>query<span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>reloaded_qs\n<span class=\"go\">&lt;QuerySet [{&#39;id&#39;: 1, &#39;name&#39;: &#39;Beatles Blog&#39;}]&gt;</span>\n</code></pre></div>\n</aside>\n<aside class=\"admonition-you-can-t-share-pickles-between-versions admonition\" role=\"note\">\n<p class=\"admonition-title\">Du kan inte dela pickles mellan versioner</p>\n<p>Pickles av <code class=\"docutils literal notranslate\">QuerySet</code>-objekt är endast giltiga för den version av Django som användes för att generera dem. Om du genererar en pickle med Django version N, finns det ingen garanti för att pickle kommer att vara läsbar med Django version N+1. Pickles bör inte användas som en del av en långsiktig arkiveringsstrategi.</p>\n<p>Eftersom kompatibilitetsfel i pickle kan vara svåra att diagnostisera, t.ex. tyst korrupta objekt, skapas en <code class=\"docutils literal notranslate\">RuntimeWarning</code> när du försöker plocka upp en queryset i en Django-version som är annorlunda än den där den plockades upp.</p>\n</aside>\n</section>\n</section>\n<section id=\"queryset-api\">\n<span id=\"id3\"></span><h2>aPI för ”frågeuppsättning<a class=\"heading-anchor\" href=\"#queryset-api\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Här är den formella deklarationen av en <code class=\"docutils literal notranslate\">QuerySet</code>:</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">QuerySet</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">model<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">query<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">using<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">hints<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Vanligtvis när du interagerar med en <code class=\"docutils literal notranslate\">QuerySet</code> använder du den genom att <a class=\"reference internal\" href=\"/sv/6.1/topics/db/queries/#chaining-filters\"><span class=\"std std-ref\">kedja filter</span></a>. För att få detta att fungera returnerar de flesta <code class=\"docutils literal notranslate\">QuerySet</code>-metoder nya querysets. Dessa metoder behandlas i detalj senare i detta avsnitt.</p>\n<p>Klassen <code class=\"docutils literal notranslate\">QuerySet</code> har följande publika attribut som du kan använda för introspektion:</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.ordered\">\n<span class=\"sig-name descname\">ordered</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.ordered\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">True</code> om <code class=\"docutils literal notranslate\">QuerySet</code> är sorterad – det vill säga har en <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.order_by\" title=\"django.db.models.query.QuerySet.order_by\"><code class=\"xref py py-meth docutils literal notranslate\">order_by()</code></a>-sats eller en standardsortering på modellen. Annars <code class=\"docutils literal notranslate\">False</code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.totally_ordered\">\n<span class=\"sig-name descname\">totally_ordered</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.totally_ordered\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"6.1\" role=\"note\">\n<p class=\"version-note-title\">New in Django 6.1</p></aside>\n<p>Returnerar <code class=\"docutils literal notranslate\">True</code> om <code class=\"docutils literal notranslate\">QuerySet</code> är sorterad och sorteringen är deterministisk. Detta kräver att sorteringen omfattar ett fält (eller en uppsättning fält) som är unikt och inte kan vara null.</p>\n<p>För frågor som innehåller en <code class=\"docutils literal notranslate\">GROUP BY</code>-sats ignoreras modellens standardsortering. Sortering som anges med <code class=\"docutils literal notranslate\">.extra(order_by=...)</code> ignoreras också.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.db\">\n<span class=\"sig-name descname\">db</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.db\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Den databas som kommer att användas om den här frågan körs nu.</p>\n</dd></dl>\n\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Parametern <code class=\"docutils literal notranslate\">query</code> till <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> finns för att specialiserade frågeunderklasser ska kunna rekonstruera interna frågestatus. Värdet på parametern är en opak representation av detta frågetillstånd och är inte en del av ett offentligt API.</p>\n</aside>\n</dd></dl>\n\n<section id=\"methods-that-return-new-querysets\">\n<h3>Metoder som returnerar nya <code class=\"docutils literal notranslate\">QuerySet</code><a class=\"heading-anchor\" href=\"#methods-that-return-new-querysets\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Django tillhandahåller en rad förfiningsmetoder för <code class=\"docutils literal notranslate\">QuerySet</code> som ändrar antingen de typer av resultat som returneras av <code class=\"docutils literal notranslate\">QuerySet</code> eller hur dess SQL-fråga exekveras.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Dessa metoder kör inte databasfrågor och är därför <strong>säkra att</strong> <strong>köra i asynkron kod</strong> och har inga separata asynkrona versioner.</p>\n</aside>\n<section id=\"filter\">\n<h4><code class=\"docutils literal notranslate\">filter()</code><a class=\"heading-anchor\" href=\"#filter\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.filter\">\n<span class=\"sig-name descname\">filter</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>args</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.filter\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returnerar en ny <code class=\"docutils literal notranslate\">QuerySet</code> som innehåller objekt som matchar de angivna uppslagningsparametrarna.</p>\n<p>Uppslagsparametrarna (<code class=\"docutils literal notranslate\">**kwargs</code>) ska vara i det format som beskrivs i <a class=\"reference internal\" href=\"#id4\">Fältuppslag</a> nedan. Flera parametrar sammanfogas via <code class=\"docutils literal notranslate\">AND</code> i den underliggande SQL-satsen.</p>\n<p>Om du behöver utföra mer komplexa frågor (till exempel frågor med <code class=\"docutils literal notranslate\">OR</code>-satser) kan du använda <a class=\"reference internal\" href=\"#q-objects\"><span class=\"std std-ref\">objekt av typen Q()</span></a> (<code class=\"docutils literal notranslate\">*args</code>).</p>\n<aside class=\"admonition-null-values-and-three-valued-logic admonition\" role=\"note\">\n<p class=\"admonition-title\"><code class=\"docutils literal notranslate\">NULL</code> values and three-valued logic</p>\n<p>When passing a <code class=\"docutils literal notranslate\">QuerySet</code> to the <a class=\"reference internal\" href=\"#std-fieldlookup-in\"><code class=\"xref std std-lookup docutils literal notranslate\">in</code></a> lookup, ensure the\nsubquery does not return <code class=\"docutils literal notranslate\">NULL</code> values. See <a class=\"reference internal\" href=\"#null-and-three-valued-logic\"><span class=\"std std-ref\">this note</span></a> for details.</p>\n</aside>\n</section>\n<section id=\"exclude\">\n<h4><code class=\"docutils literal notranslate\">exkludera()</code><a class=\"heading-anchor\" href=\"#exclude\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.exclude\">\n<span class=\"sig-name descname\">exclude</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>args</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.exclude\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returnerar en ny <code class=\"docutils literal notranslate\">QuerySet</code> som innehåller objekt som <em>inte</em> matchar de angivna uppslagningsparametrarna.</p>\n<p>Uppslagsparametrarna (<code class=\"docutils literal notranslate\">**kwargs</code>) bör vara i det format som beskrivs i <a class=\"reference internal\" href=\"#id4\">Field lookups</a> nedan. Flera parametrar sammanfogas via <code class=\"docutils literal notranslate\">AND</code> i den underliggande SQL-satsen, och det hela omsluts av en <code class=\"docutils literal notranslate\">NOT()</code>.</p>\n<p>Detta exempel utesluter alla poster vars <code class=\"docutils literal notranslate\">pub_date</code> är senare än 2005-1-3 OCH vars <code class=\"docutils literal notranslate\">headline</code> är ”Hello”:</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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>exclude<span class=\"p\">(</span>pub_date__gt<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\">3</span><span class=\"p\">),</span> headline<span class=\"o\">=</span><span class=\"s2\">&quot;Hello&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>I SQL-termer utvärderas detta till:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span>\n<span class=\"k\">WHERE</span> <span class=\"k\">NOT</span> <span class=\"p\">(</span>pub_date <span class=\"o\">&gt;</span> <span class=\"s1\">&#39;2005-1-3&#39;</span> <span class=\"k\">AND</span> headline <span class=\"o\">=</span> <span class=\"s1\">&#39;Hello&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Detta exempel utesluter alla poster vars <code class=\"docutils literal notranslate\">pub_date</code> är senare än 2005-1-3 ELLER vars rubrik är ”Hello”:</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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>exclude<span class=\"p\">(</span>pub_date__gt<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\">3</span><span class=\"p\">))</span><span class=\"o\">.</span>exclude<span class=\"p\">(</span>headline<span class=\"o\">=</span><span class=\"s2\">&quot;Hello&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>I SQL-termer utvärderas detta till:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span>\n<span class=\"k\">WHERE</span> <span class=\"k\">NOT</span> pub_date <span class=\"o\">&gt;</span> <span class=\"s1\">&#39;2005-1-3&#39;</span>\n<span class=\"k\">AND</span> <span class=\"k\">NOT</span> headline <span class=\"o\">=</span> <span class=\"s1\">&#39;Hello&#39;</span>\n</code></pre></div>\n<p>Observera att det andra exemplet är mer restriktivt.</p>\n<p>Om du behöver köra mer komplexa frågor (t.ex. frågor med <code class=\"docutils literal notranslate\">OR</code>-satser) kan du använda <a class=\"reference internal\" href=\"#django.db.models.Q\" title=\"django.db.models.Q\"><code class=\"xref py py-class docutils literal notranslate\">Q objects</code></a> (<code class=\"docutils literal notranslate\">*args</code>).</p>\n<aside class=\"admonition-null-values-and-three-valued-logic admonition\" role=\"note\">\n<p class=\"admonition-title\"><code class=\"docutils literal notranslate\">NULL</code> values and three-valued logic</p>\n<p>When passing a <code class=\"docutils literal notranslate\">QuerySet</code> to the <a class=\"reference internal\" href=\"#std-fieldlookup-in\"><code class=\"xref std std-lookup docutils literal notranslate\">in</code></a> lookup, ensure the\nsubquery does not return <code class=\"docutils literal notranslate\">NULL</code> values. See <a class=\"reference internal\" href=\"#null-and-three-valued-logic\"><span class=\"std std-ref\">this note</span></a> for details.</p>\n</aside>\n</section>\n<section id=\"annotate\">\n<h4><code class=\"docutils literal notranslate\">annotate()</code><a class=\"heading-anchor\" href=\"#annotate\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.annotate\">\n<span class=\"sig-name descname\">annotate</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>args</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.annotate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Annoterar varje objekt i <code class=\"docutils literal notranslate\">QuerySet</code> med den angivna listan av <a class=\"reference internal\" href=\"/sv/6.1/ref/models/expressions/\"><span class=\"doc\">frågeuttryck</span></a> eller <a class=\"reference internal\" href=\"#q-objects\"><span class=\"std std-ref\">objekt av typen Q()</span></a>. Varje objekt kan annoteras med:</p>\n<ul class=\"simple\">\n<li><p>ett enkelt värde, via <code class=\"docutils literal notranslate\">Value()</code>;</p></li>\n<li><p>en referens till ett fält i modellen (eller eventuella relaterade modeller), via <code class=\"docutils literal notranslate\">F()</code>;</p></li>\n<li><p>en boolean, via <code class=\"docutils literal notranslate\">Q()</code>; eller</p></li>\n<li><p>ett resultat från ett aggregerat uttryck (medelvärden, summor etc.) beräknat över de objekt som är relaterade till objekten i <code class=\"docutils literal notranslate\">QuerySet</code>.</p></li>\n</ul>\n<p>Varje argument till <code class=\"docutils literal notranslate\">annotate()</code> är en annotering som kommer att läggas till varje objekt i den <code class=\"docutils literal notranslate\">QuerySet</code> som returneras.</p>\n<p>De aggregeringsfunktioner som tillhandahålls av Django beskrivs i <a class=\"reference internal\" href=\"#id6\">Aggregeringsfunktioner</a> nedan.</p>\n<p>Annoteringar som anges med nyckelordsargument kommer att använda nyckelordet som alias för annoteringen. För anonyma argument genereras ett alias baserat på namnet på aggregeringsfunktionen och det modellfält som aggregeras. Endast aggregatuttryck som refererar till ett enda fält kan vara anonyma argument. Allt annat måste vara ett nyckelordsargument.</p>\n<p>Om du t.ex. manipulerar en lista med bloggar kanske du vill avgöra hur många inlägg som har gjorts i varje blogg:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> Count\n<span class=\"gp\">&gt;&gt;&gt; </span>q <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>Count<span class=\"p\">(</span><span class=\"s2\">&quot;entry&quot;</span><span class=\"p\">))</span>\n<span class=\"go\"># The name of the first blog</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>q<span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"o\">.</span>name\n<span class=\"go\">&#39;Blogasaurus&#39;</span>\n<span class=\"go\"># The number of entries on the first blog</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>q<span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"o\">.</span>entry__count\n<span class=\"go\">42</span>\n</code></pre></div>\n<p>Modellen <code class=\"docutils literal notranslate\">Blog</code> definierar inte ett <code class=\"docutils literal notranslate\">entry__count</code>-attribut i sig, men genom att använda ett nyckelordsargument för att ange den aggregerade funktionen kan du styra namnet på annotationen:</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>q <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>number_of_entries<span class=\"o\">=</span>Count<span class=\"p\">(</span><span class=\"s2\">&quot;entry&quot;</span><span class=\"p\">))</span>\n<span class=\"go\"># The number of entries on the first blog, using the name provided</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>q<span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"o\">.</span>number_of_entries\n<span class=\"go\">42</span>\n</code></pre></div>\n<p>För en djupgående diskussion om aggregering, se <a class=\"reference internal\" href=\"/sv/6.1/topics/db/aggregation/\"><span class=\"doc\">the topic guide on Aggregation</span></a>.</p>\n</section>\n<section id=\"alias\">\n<h4><code class=\"docutils literal notranslate\">alias()</code><a class=\"heading-anchor\" href=\"#alias\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.alias\">\n<span class=\"sig-name descname\">alias</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>args</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.alias\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Samma som <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.annotate\" title=\"django.db.models.query.QuerySet.annotate\"><code class=\"xref py py-meth docutils literal notranslate\">annotate()</code></a>, men istället för att annotera objekt i <code class=\"docutils literal notranslate\">QuerySet</code>, sparas uttrycket för senare återanvändning med andra <code class=\"docutils literal notranslate\">QuerySet</code>-metoder. Detta är användbart när resultatet av själva uttrycket inte behövs, men det används för filtrering, ordning eller som en del av ett komplext uttryck. Genom att inte välja det oanvända värdet tas överflödigt arbete bort från databasen, vilket bör leda till bättre prestanda.</p>\n<p>Om du t.ex. vill hitta bloggar med fler än 5 inlägg, men inte är intresserad av det exakta antalet inlägg, kan du göra så 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><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> Count\n<span class=\"gp\">&gt;&gt;&gt; </span>blogs <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>alias<span class=\"p\">(</span>entries<span class=\"o\">=</span>Count<span class=\"p\">(</span><span class=\"s2\">&quot;entry&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>filter<span class=\"p\">(</span>entries__gt<span class=\"o\">=</span><span class=\"mi\">5</span><span class=\"p\">)</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">alias()</code> kan användas tillsammans med <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.annotate\" title=\"django.db.models.query.QuerySet.annotate\"><code class=\"xref py py-meth docutils literal notranslate\">annotate()</code></a>, <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.exclude\" title=\"django.db.models.query.QuerySet.exclude\"><code class=\"xref py py-meth docutils literal notranslate\">exclude()</code></a>, <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.filter\" title=\"django.db.models.query.QuerySet.filter\"><code class=\"xref py py-meth docutils literal notranslate\">filter()</code></a>, <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.order_by\" title=\"django.db.models.query.QuerySet.order_by\"><code class=\"xref py py-meth docutils literal notranslate\">order_by()</code></a> och <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.update\" title=\"django.db.models.query.QuerySet.update\"><code class=\"xref py py-meth docutils literal notranslate\">update()</code></a>. Om du vill använda ett aliaserat uttryck med andra metoder (t.ex. <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.aggregate\" title=\"django.db.models.query.QuerySet.aggregate\"><code class=\"xref py py-meth docutils literal notranslate\">aggregate()</code></a>) måste du uppgradera det till en annotering:</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>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>alias<span class=\"p\">(</span>entries<span class=\"o\">=</span>Count<span class=\"p\">(</span><span class=\"s2\">&quot;entry&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n    entries<span class=\"o\">=</span>F<span class=\"p\">(</span><span class=\"s2\">&quot;entries&quot;</span><span class=\"p\">),</span>\n<span class=\"p\">)</span><span class=\"o\">.</span>aggregate<span class=\"p\">(</span>Sum<span class=\"p\">(</span><span class=\"s2\">&quot;entries&quot;</span><span class=\"p\">))</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.filter\" title=\"django.db.models.query.QuerySet.filter\"><code class=\"xref py py-meth docutils literal notranslate\">filter()</code></a> och <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.order_by\" title=\"django.db.models.query.QuerySet.order_by\"><code class=\"xref py py-meth docutils literal notranslate\">order_by()</code></a> kan ta uttryck direkt, men konstruktion och användning av uttryck sker ofta inte på samma plats (till exempel skapar en <code class=\"docutils literal notranslate\">QuerySet</code>-metod uttryck för senare användning i vyer). <code class=\"docutils literal notranslate\">alias()</code> gör det möjligt att bygga komplexa uttryck stegvis (eventuellt över flera metoder och moduler), hänvisa till uttrycksdelarna med deras alias och använda <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.annotate\" title=\"django.db.models.query.QuerySet.annotate\"><code class=\"xref py py-meth docutils literal notranslate\">annotate()</code></a> först för slutresultatet.</p>\n</section>\n<section id=\"order-by\">\n<h4><code class=\"docutils literal notranslate\">order_by()</code><a class=\"heading-anchor\" href=\"#order-by\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.order_by\">\n<span class=\"sig-name descname\">order_by</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>fields</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.order_by\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Som standard ordnas de resultat som returneras av en <code class=\"docutils literal notranslate\">QuerySet</code> enligt den ordningstupel som anges av alternativet <code class=\"docutils literal notranslate\">ordering</code> i modellens <code class=\"docutils literal notranslate\">Meta</code>. Du kan åsidosätta detta per <code class=\"docutils literal notranslate\">QuerySet</code> genom att använda metoden <code class=\"docutils literal notranslate\">order_by</code>.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__year<span class=\"o\">=</span><span class=\"mi\">2005</span><span class=\"p\">)</span><span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;-pub_date&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;headline&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Resultatet ovan kommer att sorteras efter <code class=\"docutils literal notranslate\">pub_date</code> i fallande ordning, sedan efter <code class=\"docutils literal notranslate\">headline</code> i stigande ordning. Det negativa tecknet framför <code class=\"docutils literal notranslate\">&quot;-pub_date&quot;</code> anger <em>nedstigande</em> ordning. Stigande ordning är underförstådd. För slumpmässig ordning, använd <code class=\"docutils literal notranslate\">&quot;?&quot;</code>, så här:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;?&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Obs: <code class=\"docutils literal notranslate\">order_by('?')</code>-frågor kan vara dyra och långsamma, beroende på vilken databasbackend du använder.</p>\n<p>Om du vill beställa efter ett fält i en annan modell använder du samma syntax som när du ställer frågor över modellrelationer. Det vill säga fältets namn, följt av ett dubbelt understreck (<code class=\"docutils literal notranslate\">__</code>), följt av fältets namn i den nya modellen, och så vidare för så många modeller som du vill koppla samman. Till exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;blog__name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;headline&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Om du försöker beställa efter ett fält som är en relation till en annan modell, kommer Django att använda standardbeställningen på den relaterade modellen, eller beställa efter den relaterade modellens primärnyckel om det inte finns någon <a class=\"reference internal\" href=\"/sv/6.1/ref/models/options/#django.db.models.Options.ordering\" title=\"django.db.models.Options.ordering\"><code class=\"xref py py-attr docutils literal notranslate\">Meta.ordering</code></a> angiven. Till exempel:, eftersom modellen <code class=\"docutils literal notranslate\">Blog</code> inte har någon standardordning angiven:</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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;blog&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>…är identisk med:</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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;blog__id&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Om <code class=\"docutils literal notranslate\">Blog</code> hade <code class=\"docutils literal notranslate\">ordering = ['name']</code>, så skulle den första frågeuppsättningen vara identisk med:</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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;blog__name&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Du kan också sortera efter <a class=\"reference internal\" href=\"/sv/6.1/ref/models/expressions/\"><span class=\"doc\">query expressions</span></a> genom att anropa <a class=\"reference internal\" href=\"/sv/6.1/ref/models/expressions/#django.db.models.Expression.asc\" title=\"django.db.models.Expression.asc\"><code class=\"xref py py-meth docutils literal notranslate\">asc()</code></a> eller <a class=\"reference internal\" href=\"/sv/6.1/ref/models/expressions/#django.db.models.Expression.desc\" title=\"django.db.models.Expression.desc\"><code class=\"xref py py-meth docutils literal notranslate\">desc()</code></a> på uttrycket:</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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span>Coalesce<span class=\"p\">(</span><span class=\"s2\">&quot;summary&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;headline&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>desc<span class=\"p\">())</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"/sv/6.1/ref/models/expressions/#django.db.models.Expression.asc\" title=\"django.db.models.Expression.asc\"><code class=\"xref py py-meth docutils literal notranslate\">asc()</code></a> och <a class=\"reference internal\" href=\"/sv/6.1/ref/models/expressions/#django.db.models.Expression.desc\" title=\"django.db.models.Expression.desc\"><code class=\"xref py py-meth docutils literal notranslate\">desc()</code></a> har argument (<code class=\"docutils literal notranslate\">nulls_first</code> och <code class=\"docutils literal notranslate\">nulls_last</code>) som styr hur nollvärden sorteras.</p>\n<p>Var försiktig när du sorterar efter fält i relaterade modeller om du också använder <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.distinct\" title=\"django.db.models.query.QuerySet.distinct\"><code class=\"xref py py-meth docutils literal notranslate\">distinct()</code></a>. Se anmärkningen i <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.distinct\" title=\"django.db.models.query.QuerySet.distinct\"><code class=\"xref py py-meth docutils literal notranslate\">distinct()</code></a> för en förklaring av hur sortering av relaterade modeller kan ändra de förväntade resultaten.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Det är tillåtet att ange ett flervärdesfält för att ordna resultaten efter (t.ex. ett fält <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> eller den omvända relationen för ett fält <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a>).</p>\n<p>Tänk på detta fall:</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\">Event</span><span class=\"p\">(</span>Model<span class=\"p\">):</span>\n    parent <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>\n        <span class=\"s2\">&quot;self&quot;</span><span class=\"p\">,</span>\n        on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">,</span>\n        related_name<span class=\"o\">=</span><span class=\"s2\">&quot;children&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">)</span>\n    date <span class=\"o\">=</span> models<span class=\"o\">.</span>DateField<span class=\"p\">()</span>\n\n\nEvent<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;children__date&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Här kan det potentiellt finnas flera beställningsdata för varje <code class=\"docutils literal notranslate\">Event</code>; varje <code class=\"docutils literal notranslate\">Event</code> med flera <code class=\"docutils literal notranslate\">children</code> kommer att returneras flera gånger till den nya <code class=\"docutils literal notranslate\">QuerySet</code> som <code class=\"docutils literal notranslate\">order_by()</code> skapar. Med andra ord, att använda <code class=\"docutils literal notranslate\">order_by()</code> på <code class=\"docutils literal notranslate\">QuerySet</code> kan returnera fler objekt än du arbetade med till att börja med - vilket förmodligen varken är förväntat eller användbart.</p>\n<p>Var därför försiktig när du använder flervärdesfält för att ordna resultaten. <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">**</span></a>Om du kan vara säker på att det bara kommer att finnas en beställningsuppgift för var och en av de artiklar du beställer, bör det här tillvägagångssättet inte innebära några problem. Om inte, se till att resultaten är vad du förväntar dig.</p>\n</aside>\n<p>Det finns inget sätt att ange om beställningen ska vara skiftlägeskänslig. Med avseende på skiftlägeskänslighet kommer Django att ordna resultaten på det sätt som din databas backend normalt ordnar dem.</p>\n<p>Du kan beställa efter ett fält som konverterats till små bokstäver med <a class=\"reference internal\" href=\"/sv/6.1/ref/models/database-functions/#django.db.models.functions.Lower\" title=\"django.db.models.functions.Lower\"><code class=\"xref py py-class docutils literal notranslate\">Lower</code></a> som kommer att uppnå skiftlägeskonsekvent beställning:</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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span>Lower<span class=\"p\">(</span><span class=\"s2\">&quot;headline&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>desc<span class=\"p\">())</span>\n</code></pre></div>\n<p>Om du inte vill att någon sortering ska tillämpas på en fråga, inte ens standardsorteringen, anropar du <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.order_by\" title=\"django.db.models.query.QuerySet.order_by\"><code class=\"xref py py-meth docutils literal notranslate\">order_by()</code></a> utan parametrar.</p>\n<p>Du kan se om en fråga är ordnad eller inte genom att kontrollera attributet <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.ordered\" title=\"django.db.models.query.QuerySet.ordered\"><code class=\"xref py py-attr docutils literal notranslate\">QuerySet.ordered</code></a>, som blir <code class=\"docutils literal notranslate\">True</code> om <code class=\"docutils literal notranslate\">QuerySet</code> har ordnats på något sätt.</p>\n<p>Varje anrop av <code class=\"docutils literal notranslate\">order_by()</code> rensar bort alla tidigare ordningar. Till exempel: kommer den här frågan att sorteras efter <code class=\"docutils literal notranslate\">pub_date</code> och inte <code class=\"docutils literal notranslate\">headline</code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;headline&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>Beställning är inte en gratis operation. Varje fält som du lägger till i beställningen medför en kostnad för din databas. Varje främmande nyckel som du lägger till kommer implicit att inkludera alla sina standardbeställningar också.</p>\n<p>Om en fråga inte har någon angiven ordning returneras resultaten från databasen i en ospecificerad ordning. En viss ordning garanteras endast när ordningen görs med hjälp av en uppsättning fält som unikt identifierar varje objekt i resultatet. Om t.ex. fältet <code class=\"docutils literal notranslate\">name</code> inte är unikt garanterar inte beställningen efter det att objekt med samma namn alltid visas i samma ordning.</p>\n</aside>\n</section>\n<section id=\"reverse\">\n<h4><code class=\"docutils literal notranslate\">reverse()</code><a class=\"heading-anchor\" href=\"#reverse\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.reverse\">\n<span class=\"sig-name descname\">reverse</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.reverse\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Använd metoden <code class=\"docutils literal notranslate\">reverse()</code> för att vända den ordning i vilken elementen i en queryset returneras. Om du anropar <code class=\"docutils literal notranslate\">reverse()</code> en andra gång återställs ordningen till den normala riktningen.</p>\n<p>Om du vill hämta de ”sista” fem objekten i en frågeuppsättning kan du göra 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>my_queryset<span class=\"o\">.</span>reverse<span class=\"p\">()[:</span><span class=\"mi\">5</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>Observera att detta inte är riktigt samma sak som att skära från slutet av en sekvens i Python. Exemplet ovan returnerar det sista objektet först, sedan det näst sista objektet och så vidare. Om vi hade en Python-sekvens och tittade på <code class=\"docutils literal notranslate\">seq[-5:]</code>, skulle vi se det femte sista objektet först. Django stöder inte detta sätt (att skära från slutet), eftersom det inte är möjligt att göra det effektivt i SQL.</p>\n<p>Observera även att <code class=\"docutils literal notranslate\">reverse()</code> normalt endast bör anropas för en <code class=\"docutils literal notranslate\">QuerySet</code> med definierad sortering (t.ex. vid frågor mot en modell som definierar en standardsortering, eller när <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.order_by\" title=\"django.db.models.query.QuerySet.order_by\"><code class=\"xref py py-meth docutils literal notranslate\">order_by()</code></a> används). Om ingen sådan sortering har definierats för en viss <code class=\"docutils literal notranslate\">QuerySet</code> har anrop till <code class=\"docutils literal notranslate\">reverse()</code> ingen verklig effekt (sorteringen var odefinierad innan <code class=\"docutils literal notranslate\">reverse()</code> anropades och förblir odefinierad efteråt).</p>\n</section>\n<section id=\"distinct\">\n<h4><code class=\"docutils literal notranslate\">distinct()</code><a class=\"heading-anchor\" href=\"#distinct\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.distinct\">\n<span class=\"sig-name descname\">distinct</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>fields</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.distinct\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returnerar en ny <code class=\"docutils literal notranslate\">QuerySet</code> som använder <code class=\"docutils literal notranslate\">SELECT DISTINCT</code> i sin SQL-fråga. Detta eliminerar duplicerade rader från frågeresultaten.</p>\n<p>Som standard kommer en <code class=\"docutils literal notranslate\">QuerySet</code> inte att eliminera duplicerade rader. I praktiken är detta sällan ett problem, eftersom enkla frågor som <code class=\"docutils literal notranslate\">Blog.objects.all()</code> inte introducerar möjligheten till duplicerade resultatrader. Men om din fråga spänner över flera tabeller är det möjligt att få dubbla resultat när en <code class=\"docutils literal notranslate\">QuerySet</code> utvärderas. Det är då du skulle använda <code class=\"docutils literal notranslate\">distinct()</code>.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Alla fält som används i ett <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.order_by\" title=\"django.db.models.query.QuerySet.order_by\"><code class=\"xref py py-meth docutils literal notranslate\">order_by()</code></a>-anrop ingår i SQL-kolumnerna <code class=\"docutils literal notranslate\">SELECT</code>. Detta kan ibland leda till oväntade resultat när det används tillsammans med <code class=\"docutils literal notranslate\">distinct()</code>. Om du beställer efter fält från en relaterad modell kommer dessa fält att läggas till i de valda kolumnerna och de kan göra att annars duplicerade rader verkar vara distinkta. Eftersom de extra kolumnerna inte visas i de returnerade resultaten (de finns bara där för att stödja beställningen) ser det ibland ut som om icke-distinkta resultat returneras.</p>\n<p>På samma sätt: om du använder en <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.values\" title=\"django.db.models.query.QuerySet.values\"><code class=\"xref py py-meth docutils literal notranslate\">values()</code></a>-fråga för att begränsa de kolumner som väljs, deltar fortfarande de kolumner som används i en <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.order_by\" title=\"django.db.models.query.QuerySet.order_by\"><code class=\"xref py py-meth docutils literal notranslate\">order_by()</code></a> (eller modellens standardsortering) och kan påverka resultatens unikhet.</p>\n<p>Poängen är att om du använder <code class=\"docutils literal notranslate\">distinct()</code> ska du vara försiktig med sortering efter relaterade modeller. På samma sätt ska du, när du använder <code class=\"docutils literal notranslate\">distinct()</code> och <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.values\" title=\"django.db.models.query.QuerySet.values\"><code class=\"xref py py-meth docutils literal notranslate\">values()</code></a> tillsammans, vara försiktig vid sortering efter fält som inte ingår i <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.values\" title=\"django.db.models.query.QuerySet.values\"><code class=\"xref py py-meth docutils literal notranslate\">values()</code></a>-anropet.</p>\n</aside>\n<p>Endast på PostgreSQL kan du skicka positionella argument (`` * fält``) för att ange namnen på fält som `` DISTINCT`` ska gälla. Detta översätts till en SQL-fråga <code class=\"docutils literal notranslate\">SELECT DISTINCT ON</code>. Här är skillnaden. Vid ett normalt <code class=\"docutils literal notranslate\">distinct()</code>-anrop jämför databasen <em>varje</em> fält i varje rad när den avgör vilka rader som är distinkta. Vid ett <code class=\"docutils literal notranslate\">distinct()</code>-anrop med specificerade fältnamn jämför databasen bara de specificerade fältnamnen.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>När du anger fältnamn <em>måste</em> du tillhandahålla en <code class=\"docutils literal notranslate\">order_by()</code> i <code class=\"docutils literal notranslate\">QuerySet</code>, och fälten i <code class=\"docutils literal notranslate\">order_by()</code> måste börja med fälten i <code class=\"docutils literal notranslate\">distinct()</code>, i samma ordning.</p>\n<p>Till exempel:, <code class=\"docutils literal notranslate\">SELECT DISTINCT ON (a)</code> ger dig den första raden för varje värde i kolumn <code class=\"docutils literal notranslate\">a</code>. Om du inte anger någon ordning får du någon godtycklig rad.</p>\n</aside>\n<p>Exempel (de efter den första kommer bara att fungera på PostgreSQL):</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>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>distinct<span class=\"p\">()</span>\n<span class=\"go\">&lt;QuerySet [...]&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>distinct<span class=\"p\">(</span><span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [...]&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;blog&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>distinct<span class=\"p\">(</span><span class=\"s2\">&quot;blog&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [...]&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;author&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>distinct<span class=\"p\">(</span><span class=\"s2\">&quot;author&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [...]&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;blog__name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;mod_date&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>distinct<span class=\"p\">(</span><span class=\"s2\">&quot;blog__name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;mod_date&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [...]&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;author&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>distinct<span class=\"p\">(</span><span class=\"s2\">&quot;author&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [...]&gt;</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Tänk på att <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.order_by\" title=\"django.db.models.query.QuerySet.order_by\"><code class=\"xref py py-meth docutils literal notranslate\">order_by()</code></a> använder all standardordning för relaterade modeller som har definierats. Du kan behöva uttryckligen beställa efter relationens <code class=\"docutils literal notranslate\">_id</code> eller det refererade fältet för att se till att <code class=\"docutils literal notranslate\">DISTINCT ON</code> -uttrycken matchar dem i början av <code class=\"docutils literal notranslate\">ORDER BY</code> -klausulen. Till exempel:, om modellen <code class=\"docutils literal notranslate\">Blog</code> definierade en <a class=\"reference internal\" href=\"/sv/6.1/ref/models/options/#django.db.models.Options.ordering\" title=\"django.db.models.Options.ordering\"><code class=\"xref py py-attr docutils literal notranslate\">ordering</code></a> by <code class=\"docutils literal notranslate\">name</code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;blog&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>distinct<span class=\"p\">(</span><span class=\"s2\">&quot;blog&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>… skulle inte fungera eftersom frågan skulle beställas av <code class=\"docutils literal notranslate\">blog__name</code> och därmed inte matcha <code class=\"docutils literal notranslate\">DISTINCT ON</code>-uttrycket. Du måste uttryckligen beställa efter relationens <code class=\"docutils literal notranslate\">_id</code>-fält (<code class=\"docutils literal notranslate\">blog_id</code> i det här fallet) eller den refererade (<code class=\"docutils literal notranslate\">blog__pk</code>) för att se till att båda uttrycken matchar.</p>\n</aside>\n</section>\n<section id=\"values\">\n<h4><code class=\"docutils literal notranslate\">värden()</code><a class=\"heading-anchor\" href=\"#values\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.values\">\n<span class=\"sig-name descname\">values</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>fields</em>, <em class=\"sig-param\"><span class=\"o\">**</span>expressions</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.values\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returnerar en <code class=\"docutils literal notranslate\">QuerySet</code> som returnerar ordböcker, snarare än modellinstanser, när den används som en iterabel.</p>\n<p>Var och en av dessa ordböcker representerar ett objekt, med nycklar som motsvarar attributnamnen för modellobjekt.</p>\n<p>I detta exempel jämförs ordlistorna i <code class=\"docutils literal notranslate\">values()</code> med de normala modellobjekten:</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=\"go\"># This list contains a Blog object.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>name__startswith<span class=\"o\">=</span><span class=\"s2\">&quot;Beatles&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [&lt;Blog: Beatles Blog&gt;]&gt;</span>\n\n<span class=\"go\"># This list contains a dictionary.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>name__startswith<span class=\"o\">=</span><span class=\"s2\">&quot;Beatles&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>values<span class=\"p\">()</span>\n<span class=\"go\">&lt;QuerySet [{&#39;id&#39;: 1, &#39;name&#39;: &#39;Beatles Blog&#39;, &#39;tagline&#39;: &#39;All the latest Beatles news.&#39;}]&gt;</span>\n</code></pre></div>\n<p>Metoden <code class=\"docutils literal notranslate\">values()</code> tar emot valfria positionella argument, <code class=\"docutils literal notranslate\">*fields</code>, som anger fältnamn som <code class=\"docutils literal notranslate\">SELECT</code> ska begränsas till. Om du anger fälten kommer varje dictionary endast att innehålla fältnycklarna/värdena för de fält du anger. Om du inte anger fälten kommer varje ordbok att innehålla en nyckel och ett värde för varje fält i databastabellen.</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>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>values<span class=\"p\">()</span>\n<span class=\"go\">&lt;QuerySet [{&#39;id&#39;: 1, &#39;name&#39;: &#39;Beatles Blog&#39;, &#39;tagline&#39;: &#39;All the latest Beatles news.&#39;}]&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>values<span class=\"p\">(</span><span class=\"s2\">&quot;id&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;name&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [{&#39;id&#39;: 1, &#39;name&#39;: &#39;Beatles Blog&#39;}]&gt;</span>\n</code></pre></div>\n<p>Metoden <code class=\"docutils literal notranslate\">values()</code> tar också valfria nyckelordsargument, <code class=\"docutils literal notranslate\">**expressions</code>, som skickas vidare till <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.annotate\" title=\"django.db.models.query.QuerySet.annotate\"><code class=\"xref py py-meth docutils literal notranslate\">annotate()</code></a>:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Lower\n<span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>values<span class=\"p\">(</span>lower_name<span class=\"o\">=</span>Lower<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">))</span>\n<span class=\"go\">&lt;QuerySet [{&#39;lower_name&#39;: &#39;beatles blog&#39;}]&gt;</span>\n</code></pre></div>\n<p>Du kan använda inbyggda och <a class=\"reference internal\" href=\"/sv/6.1/howto/custom-lookups/\"><span class=\"doc\">custom lookups</span></a> i beställningen. Till 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><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> CharField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Lower\n<span class=\"gp\">&gt;&gt;&gt; </span>CharField<span class=\"o\">.</span>register_lookup<span class=\"p\">(</span>Lower<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>values<span class=\"p\">(</span><span class=\"s2\">&quot;name__lower&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [{&#39;name__lower&#39;: &#39;beatles blog&#39;}]&gt;</span>\n</code></pre></div>\n<p>Ett aggregat inom en <code class=\"docutils literal notranslate\">values()</code>-sats tillämpas före andra argument inom samma <code class=\"docutils literal notranslate\">values()</code>-sats. Om du behöver gruppera efter ett annat värde lägger du till det i en tidigare <code class=\"docutils literal notranslate\">values()</code>-sats istället. Ett 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><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> Count\n<span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>values<span class=\"p\">(</span><span class=\"s2\">&quot;entry__authors&quot;</span><span class=\"p\">,</span> entries<span class=\"o\">=</span>Count<span class=\"p\">(</span><span class=\"s2\">&quot;entry&quot;</span><span class=\"p\">))</span>\n<span class=\"go\">&lt;QuerySet [{&#39;entry__authors&#39;: 1, &#39;entries&#39;: 20}, {&#39;entry__authors&#39;: 1, &#39;entries&#39;: 13}]&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>values<span class=\"p\">(</span><span class=\"s2\">&quot;entry__authors&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>annotate<span class=\"p\">(</span>entries<span class=\"o\">=</span>Count<span class=\"p\">(</span><span class=\"s2\">&quot;entry&quot;</span><span class=\"p\">))</span>\n<span class=\"go\">&lt;QuerySet [{&#39;entry__authors&#39;: 1, &#39;entries&#39;: 33}]&gt;</span>\n</code></pre></div>\n<p>Några finesser som är värda att nämna:</p>\n<ul>\n<li><p>Om du har ett fält som heter <code class=\"docutils literal notranslate\">foo</code> som är en <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a>, kommer standardanropet <code class=\"docutils literal notranslate\">values()</code> att returnera en ordboksnyckel som heter <code class=\"docutils literal notranslate\">foo_id</code>, eftersom detta är namnet på det dolda modellattributet som lagrar det faktiska värdet (attributet <code class=\"docutils literal notranslate\">foo</code> hänvisar till den relaterade modellen). När du anropar <code class=\"docutils literal notranslate\">values()</code> och skickar in fältnamn kan du skicka in antingen <code class=\"docutils literal notranslate\">foo</code> eller <code class=\"docutils literal notranslate\">foo_id</code> och du kommer att få tillbaka samma sak (ordboksnyckeln matchar fältnamnet du skickade in).</p>\n<p>Till 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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>values<span class=\"p\">()</span>\n<span class=\"go\">&lt;QuerySet [{&#39;blog_id&#39;: 1, &#39;headline&#39;: &#39;First Entry&#39;, ...}, ...]&gt;</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>values<span class=\"p\">(</span><span class=\"s2\">&quot;blog&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [{&#39;blog&#39;: 1}, ...]&gt;</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>values<span class=\"p\">(</span><span class=\"s2\">&quot;blog_id&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [{&#39;blog_id&#39;: 1}, ...]&gt;</span>\n</code></pre></div>\n</li>\n<li><p>När <code class=\"docutils literal notranslate\">values()</code> används tillsammans med <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.distinct\" title=\"django.db.models.query.QuerySet.distinct\"><code class=\"xref py py-meth docutils literal notranslate\">distinct()</code></a> bör du tänka på att sorteringen kan påverka resultaten. Mer information finns i anmärkningen om <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.distinct\" title=\"django.db.models.query.QuerySet.distinct\"><code class=\"xref py py-meth docutils literal notranslate\">distinct()</code></a>.</p></li>\n<li><p>Om du använder en <code class=\"docutils literal notranslate\">values()</code>-sats efter ett <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.extra\" title=\"django.db.models.query.QuerySet.extra\"><code class=\"xref py py-meth docutils literal notranslate\">extra()</code></a>-anrop måste alla fält som definieras av ett <code class=\"docutils literal notranslate\">select</code>-argument i <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.extra\" title=\"django.db.models.query.QuerySet.extra\"><code class=\"xref py py-meth docutils literal notranslate\">extra()</code></a> uttryckligen tas med i <code class=\"docutils literal notranslate\">values()</code>-anropet. Alla <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.extra\" title=\"django.db.models.query.QuerySet.extra\"><code class=\"xref py py-meth docutils literal notranslate\">extra()</code></a>-anrop som görs efter ett <code class=\"docutils literal notranslate\">values()</code>-anrop får sina extra valda fält ignorerade.</p></li>\n<li><p>Det är meningslöst att anropa <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.only\" title=\"django.db.models.query.QuerySet.only\"><code class=\"xref py py-meth docutils literal notranslate\">only()</code></a> och <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.defer\" title=\"django.db.models.query.QuerySet.defer\"><code class=\"xref py py-meth docutils literal notranslate\">defer()</code></a> efter <code class=\"docutils literal notranslate\">values()</code>, så om du gör det utlöses ett <code class=\"docutils literal notranslate\">TypeError</code>.</p></li>\n<li><p>För att kombinera transformationer och aggregat krävs att två <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.annotate\" title=\"django.db.models.query.QuerySet.annotate\"><code class=\"xref py py-meth docutils literal notranslate\">annotate()</code></a>-anrop används, antingen explicit eller som nyckelordsargument till <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.values\" title=\"django.db.models.query.QuerySet.values\"><code class=\"xref py py-meth docutils literal notranslate\">values()</code></a>. Som ovan, om transformationen har registrerats på den relevanta fälttypen kan den första <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.annotate\" title=\"django.db.models.query.QuerySet.annotate\"><code class=\"xref py py-meth docutils literal notranslate\">annotate()</code></a> utelämnas, vilket innebär att följande exempel är likvärdiga:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> CharField<span class=\"p\">,</span> Count\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Lower\n<span class=\"gp\">&gt;&gt;&gt; </span>CharField<span class=\"o\">.</span>register_lookup<span class=\"p\">(</span>Lower<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>values<span class=\"p\">(</span><span class=\"s2\">&quot;entry__authors__name__lower&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>annotate<span class=\"p\">(</span>entries<span class=\"o\">=</span>Count<span class=\"p\">(</span><span class=\"s2\">&quot;entry&quot;</span><span class=\"p\">))</span>\n<span class=\"go\">&lt;QuerySet [{&#39;entry__authors__name__lower&#39;: &#39;test author&#39;, &#39;entries&#39;: 33}]&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>values<span class=\"p\">(</span>entry__authors__name__lower<span class=\"o\">=</span>Lower<span class=\"p\">(</span><span class=\"s2\">&quot;entry__authors__name&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    entries<span class=\"o\">=</span>Count<span class=\"p\">(</span><span class=\"s2\">&quot;entry&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [{&#39;entry__authors__name__lower&#39;: &#39;test author&#39;, &#39;entries&#39;: 33}]&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>entry__authors__name__lower<span class=\"o\">=</span>Lower<span class=\"p\">(</span><span class=\"s2\">&quot;entry__authors__name&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>values<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;entry__authors__name__lower&quot;</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>annotate<span class=\"p\">(</span>entries<span class=\"o\">=</span>Count<span class=\"p\">(</span><span class=\"s2\">&quot;entry&quot;</span><span class=\"p\">))</span>\n<span class=\"go\">&lt;QuerySet [{&#39;entry__authors__name__lower&#39;: &#39;test author&#39;, &#39;entries&#39;: 33}]&gt;</span>\n</code></pre></div>\n</li>\n</ul>\n<p>Det är användbart när du vet att du bara kommer att behöva värden från ett litet antal av de tillgängliga fälten och du inte behöver funktionaliteten hos ett modellinstansobjekt. Det är mer effektivt att bara välja de fält som du behöver använda.</p>\n<p>Slutligen, notera att du kan anropa <code class=\"docutils literal notranslate\">filter()</code>, <code class=\"docutils literal notranslate\">order_by()</code>, etc. efter <code class=\"docutils literal notranslate\">values()</code>-anropet, vilket innebär att dessa två anrop är identiska:</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>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>values<span class=\"p\">()</span><span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;id&quot;</span><span class=\"p\">)</span>\nBlog<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;id&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>values<span class=\"p\">()</span>\n</code></pre></div>\n<p>De som skapade Django föredrar att lägga alla SQL-påverkande metoder först, följt (eventuellt) av alla output-påverkande metoder (som <code class=\"docutils literal notranslate\">values()</code>), men det spelar egentligen ingen roll. Det här är din chans att verkligen visa upp din individualism.</p>\n<p>Du kan också hänvisa till fält i relaterade modeller med omvända relationer genom attributen <code class=\"docutils literal notranslate\">OneToOneField</code>, <code class=\"docutils literal notranslate\">ForeignKey</code> och <code class=\"docutils literal notranslate\">ManyToManyField</code>:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>values<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;entry__headline&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [{&#39;name&#39;: &#39;My blog&#39;, &#39;entry__headline&#39;: &#39;An entry&#39;},</span>\n<span class=\"go\">     {&#39;name&#39;: &#39;My blog&#39;, &#39;entry__headline&#39;: &#39;Another entry&#39;}, ...]&gt;</span>\n</code></pre></div>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>Eftersom <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a>-attribut och omvända relationer kan ha flera relaterade rader, kan inkludering av dessa ha en multiplikatoreffekt på storleken på din resultatuppsättning. Detta kommer att vara särskilt uttalat om du inkluderar flera sådana fält i din <code class=\"docutils literal notranslate\">values()</code>-fråga, i vilket fall alla möjliga kombinationer kommer att returneras.</p>\n</aside>\n<aside class=\"admonition-special-values-for-jsonfield-on-sqlite admonition\" role=\"note\">\n<p class=\"admonition-title\">Specialvärden för <code class=\"docutils literal notranslate\">JSONField</code> på SQLite</p>\n<p>På grund av hur SQL-funktionerna <code class=\"docutils literal notranslate\">JSON_EXTRACT</code> och <code class=\"docutils literal notranslate\">JSON_TYPE</code> implementeras i SQLite, och avsaknaden av datatypen <code class=\"docutils literal notranslate\">BOOLEAN</code>, kommer <code class=\"docutils literal notranslate\">values()</code> att returnera <code class=\"docutils literal notranslate\">True</code>, <code class=\"docutils literal notranslate\">False</code> och <code class=\"docutils literal notranslate\">None</code> istället för <code class=\"docutils literal notranslate\">&quot;true&quot;</code>, <code class=\"docutils literal notranslate\">&quot;false&quot;</code> och <code class=\"docutils literal notranslate\">&quot;null&quot;</code> strängar för <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.JSONField\" title=\"django.db.models.JSONField\"><code class=\"xref py py-class docutils literal notranslate\">JSONField</code></a> nyckelomvandlingar.</p>\n</aside>\n</section>\n<section id=\"values-list\">\n<h4><code class=\"docutils literal notranslate\">values_list()</code><a class=\"heading-anchor\" href=\"#values-list\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.values_list\">\n<span class=\"sig-name descname\">values_list</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>fields</em>, <em class=\"sig-param\">flat<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">named<span class=\"o\">=</span><span class=\"default_value\">False</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.values_list\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Detta liknar <code class=\"docutils literal notranslate\">values()</code> förutom att den istället för att returnera ordböcker returnerar tuplar när den itereras över. Varje tupel innehåller värdet från respektive fält eller uttryck som skickas till anropet <code class=\"docutils literal notranslate\">values_list()</code> - så det första objektet är det första fältet, etc. Till 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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>values_list<span class=\"p\">(</span><span class=\"s2\">&quot;id&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;headline&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [(1, &#39;First entry&#39;), ...]&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Lower\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>values_list<span class=\"p\">(</span><span class=\"s2\">&quot;id&quot;</span><span class=\"p\">,</span> Lower<span class=\"p\">(</span><span class=\"s2\">&quot;headline&quot;</span><span class=\"p\">))</span>\n<span class=\"go\">&lt;QuerySet [(1, &#39;first entry&#39;), ...]&gt;</span>\n</code></pre></div>\n<p>Om du bara skickar in ett enda fält kan du också skicka in parametern <code class=\"docutils literal notranslate\">flat</code>. Om den är <code class=\"docutils literal notranslate\">True</code> innebär detta att de returnerade resultaten är enskilda värden snarare än 1-tupler. Ett exempel bör göra skillnaden tydligare:</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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>values_list<span class=\"p\">(</span><span class=\"s2\">&quot;id&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;id&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet[(1,), (2,), (3,), ...]&gt;</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>values_list<span class=\"p\">(</span><span class=\"s2\">&quot;id&quot;</span><span class=\"p\">,</span> flat<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span><span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;id&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [1, 2, 3, ...]&gt;</span>\n</code></pre></div>\n<p>Det är fel att skicka in <code class=\"docutils literal notranslate\">flat</code> när det finns mer än ett fält.</p>\n<p>Du kan ange <code class=\"docutils literal notranslate\">named=True</code> för att få resultat som en <a class=\"reference external\" href=\"https://docs.python.org/3/library/collections.html#collections.namedtuple\" title=\"(in Python v3.14)\"><code class=\"xref py py-func docutils literal notranslate\">namedtuple()</code></a>:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>values_list<span class=\"p\">(</span><span class=\"s2\">&quot;id&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;headline&quot;</span><span class=\"p\">,</span> named<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [Row(id=1, headline=&#39;First entry&#39;), ...]&gt;</span>\n</code></pre></div>\n<p>Att använda en namngiven tupel kan göra det lättare att läsa resultaten, på bekostnad av en liten prestandaförlust för att omvandla resultaten till en namngiven tupel.</p>\n<p>Om du inte skickar några värden till <code class=\"docutils literal notranslate\">values_list()</code> returneras alla fält i modellen i den ordning de deklarerades.</p>\n<p>Ett vanligt behov är att få ett specifikt fältvärde för en viss modellinstans. För att uppnå det använder du <code class=\"docutils literal notranslate\">values_list()</code> följt av ett <code class=\"docutils literal notranslate\">get()</code>-anrop:</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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>values_list<span class=\"p\">(</span><span class=\"s2\">&quot;headline&quot;</span><span class=\"p\">,</span> flat<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span><span class=\"o\">.</span>get<span class=\"p\">(</span>pk<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"go\">&#39;First entry&#39;</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">values()</code> och <code class=\"docutils literal notranslate\">values_list()</code> är båda avsedda som optimeringar för ett specifikt användningsfall: att hämta en delmängd av data utan att skapa en modellinstans. Denna metafor faller sönder när man hanterar många-till-många och andra flervärdesrelationer (t.ex. en-till-många-relationen för en omvänd främmande nyckel) eftersom antagandet ”en rad, ett objekt” inte håller.</p>\n<p>Lägg till exempel märke till beteendet vid en fråga över en <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a>:</p>\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>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>values_list<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;entry__headline&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [(&#39;Noam Chomsky&#39;, &#39;Impressions of Gaza&#39;),</span>\n<span class=\"go\"> (&#39;George Orwell&#39;, &#39;Why Socialists Do Not Believe in Fun&#39;),</span>\n<span class=\"go\"> (&#39;George Orwell&#39;, &#39;In Defence of English Cooking&#39;),</span>\n<span class=\"go\"> (&#39;Don Quixote&#39;, None)]&gt;</span>\n</code></pre></div>\n<p>Författare med flera poster visas flera gånger och författare utan några poster har <code class=\"docutils literal notranslate\">None</code> för postrubriken.</p>\n<p>På samma sätt visas <code class=\"docutils literal notranslate\">None</code> för poster som inte har någon författare när du frågar efter en omvänd främmande nyckel:</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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>values_list<span class=\"p\">(</span><span class=\"s2\">&quot;authors&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [(&#39;Noam Chomsky&#39;,), (&#39;George Orwell&#39;,), (None,)]&gt;</span>\n</code></pre></div>\n<aside class=\"admonition-special-values-for-jsonfield-on-sqlite admonition\" role=\"note\">\n<p class=\"admonition-title\">Specialvärden för <code class=\"docutils literal notranslate\">JSONField</code> på SQLite</p>\n<p>På grund av hur SQL-funktionerna <code class=\"docutils literal notranslate\">JSON_EXTRACT</code> och <code class=\"docutils literal notranslate\">JSON_TYPE</code> implementeras i SQLite, och avsaknaden av datatypen <code class=\"docutils literal notranslate\">BOOLEAN</code>, kommer <code class=\"docutils literal notranslate\">values_list()</code> att returnera <code class=\"docutils literal notranslate\">True</code>, <code class=\"docutils literal notranslate\">False</code> och <code class=\"docutils literal notranslate\">None</code> istället för <code class=\"docutils literal notranslate\">&quot;true&quot;</code>, <code class=\"docutils literal notranslate\">&quot;false&quot;</code> och <code class=\"docutils literal notranslate\">&quot;null&quot;</code> strängar för <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.JSONField\" title=\"django.db.models.JSONField\"><code class=\"xref py py-class docutils literal notranslate\">JSONField</code></a> key transforms.</p>\n</aside>\n</section>\n<section id=\"dates\">\n<h4><code class=\"docutils literal notranslate\">dates()</code><a class=\"heading-anchor\" href=\"#dates\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.dates\">\n<span class=\"sig-name descname\">dates</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">field</em>, <em class=\"sig-param\">kind</em>, <em class=\"sig-param\">order<span class=\"o\">=</span><span class=\"default_value\">'ASC'</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.dates\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returnerar en <code class=\"docutils literal notranslate\">QuerySet</code> som utvärderas till en lista med <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.date\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">datetime.date</code></a>-objekt som representerar alla tillgängliga datum av en viss typ inom innehållet i <code class=\"docutils literal notranslate\">QuerySet</code>.</p>\n<p><code class=\"docutils literal notranslate\">field</code> ska vara namnet på en <code class=\"docutils literal notranslate\">DateField</code> av din modell. <code class=\"docutils literal notranslate\">kind</code> bör vara antingen <code class=\"docutils literal notranslate\">&quot;year&quot;</code>, <code class=\"docutils literal notranslate\">&quot;month&quot;</code>, <code class=\"docutils literal notranslate\">&quot;week&quot;</code> eller <code class=\"docutils literal notranslate\">&quot;day&quot;</code>. Varje <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.date\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">datetime.date</code></a>-objekt i resultatlistan ”trunkeras” till den angivna <code class=\"docutils literal notranslate\">typen</code>.</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">&quot;year&quot;</code> returnerar en lista med alla distinkta årsvärden för fältet.</p></li>\n<li><p><code class=\"docutils literal notranslate\">&quot;month&quot;</code> returnerar en lista med alla distinkta år/månad-värden för fältet.</p></li>\n<li><p><code class=\"docutils literal notranslate\">&quot;week&quot;</code> returnerar en lista med alla distinkta år/veckovärden för fältet. Alla datum kommer att vara en måndag.</p></li>\n<li><p><code class=\"docutils literal notranslate\">&quot;day&quot;</code> returnerar en lista med alla distinkta år/månad/dag-värden för fältet.</p></li>\n</ul>\n<p><code class=\"docutils literal notranslate\">order</code>, som har standardvärdet <code class=\"docutils literal notranslate\">'ASC'</code>, bör vara antingen <code class=\"docutils literal notranslate\">'ASC'</code> eller <code class=\"docutils literal notranslate\">'DESC'</code>. Detta anger hur resultaten ska ordnas.</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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>dates<span class=\"p\">(</span><span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;year&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">[datetime.date(2005, 1, 1)]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>dates<span class=\"p\">(</span><span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;month&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">[datetime.date(2005, 2, 1), datetime.date(2005, 3, 1)]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>dates<span class=\"p\">(</span><span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;week&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">[datetime.date(2005, 2, 14), datetime.date(2005, 3, 14)]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>dates<span class=\"p\">(</span><span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;day&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">[datetime.date(2005, 2, 20), datetime.date(2005, 3, 20)]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>dates<span class=\"p\">(</span><span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;day&quot;</span><span class=\"p\">,</span> order<span class=\"o\">=</span><span class=\"s2\">&quot;DESC&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">[datetime.date(2005, 3, 20), datetime.date(2005, 2, 20)]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>headline__contains<span class=\"o\">=</span><span class=\"s2\">&quot;Lennon&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>dates<span class=\"p\">(</span><span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;day&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">[datetime.date(2005, 3, 20)]</span>\n</code></pre></div>\n</section>\n<section id=\"datetimes\">\n<h4><code class=\"docutils literal notranslate\">datetimes()</code><a class=\"heading-anchor\" href=\"#datetimes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.datetimes\">\n<span class=\"sig-name descname\">datetimes</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">field_name</em>, <em class=\"sig-param\">kind</em>, <em class=\"sig-param\">order<span class=\"o\">=</span><span class=\"default_value\">'ASC'</span></em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.datetimes\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returnerar en <code class=\"docutils literal notranslate\">QuerySet</code> som utvärderas till en lista med <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">datetime.datetime</code></a>-objekt som representerar alla tillgängliga datum av en viss typ inom innehållet i <code class=\"docutils literal notranslate\">QuerySet</code>.</p>\n<p><code class=\"docutils literal notranslate\">field_name</code> ska vara namnet på en <code class=\"docutils literal notranslate\">DateTimeField</code> i din modell.</p>\n<p><code class=\"docutils literal notranslate\">kind</code> bör vara antingen <code class=\"docutils literal notranslate\">&quot;year&quot;</code>, <code class=\"docutils literal notranslate\">&quot;month&quot;</code>, <code class=\"docutils literal notranslate\">&quot;week&quot;</code>, <code class=\"docutils literal notranslate\">&quot;day&quot;</code>, <code class=\"docutils literal notranslate\">&quot;hour&quot;</code>, <code class=\"docutils literal notranslate\">&quot;minute&quot;</code> eller <code class=\"docutils literal notranslate\">&quot;second&quot;</code>. Varje <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.datetime\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">datetime.datetime</code></a>-objekt i resultatlistan ”trunkeras” till den angivna <code class=\"docutils literal notranslate\">typen</code>.</p>\n<p><code class=\"docutils literal notranslate\">order</code>, som har standardvärdet <code class=\"docutils literal notranslate\">'ASC'</code>, bör vara antingen <code class=\"docutils literal notranslate\">'ASC'</code> eller <code class=\"docutils literal notranslate\">'DESC'</code>. Detta anger hur resultaten ska ordnas.</p>\n<p><code class=\"docutils literal notranslate\">tzinfo</code> definierar den tidszon till vilken datatider konverteras före trunkering. En given datatid har faktiskt olika representationer beroende på vilken tidszon som används. Denna parameter måste vara ett <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.tzinfo\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">datetime.tzinfo</code></a>-objekt. Om den är <code class=\"docutils literal notranslate\">None</code> använder Django <a class=\"reference internal\" href=\"/sv/6.1/topics/i18n/timezones/#default-current-time-zone\"><span class=\"std std-ref\">aktuell tidszon</span></a>. Det har ingen effekt när <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\">USE_TZ</code></a> är <code class=\"docutils literal notranslate\">False</code>.</p>\n<aside class=\"admonition admonition-note\" id=\"database-time-zone-definitions\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Denna funktion utför tidszonskonverteringar direkt i databasen. Som en konsekvens måste din databas kunna tolka värdet av <code class=\"docutils literal notranslate\">tzinfo.tzname(None)</code>. Detta översätts till följande krav:</p>\n<ul class=\"simple\">\n<li><p>SQLite: inga krav. Konverteringar utförs i Python.</p></li>\n<li><p>PostgreSQL: inga krav (se <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/datatype-datetime.html#DATATYPE-TIMEZONES\">Time Zones</a>).</p></li>\n<li><p>Oracle: inga krav (se <a class=\"reference external\" href=\"https://docs.oracle.com/en/database/oracle/oracle-database/18/nlspg/datetime-data-types-and-time-zone-support.html#GUID-805AB986-DE12-4FEA-AF56-5AABCD2132DF\">Välja en tidszonfil</a>).</p></li>\n<li><p>MySQL: ladda tidszonstabellerna med <a class=\"reference external\" href=\"https://dev.mysql.com/doc/refman/en/mysql-tzinfo-to-sql.html\">mysql_tzinfo_to_sql</a>.</p></li>\n</ul>\n</aside>\n</section>\n<section id=\"none\">\n<h4><code class=\"docutils literal notranslate\">none()</code><a class=\"heading-anchor\" href=\"#none\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.none\">\n<span class=\"sig-name descname\">none</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.none\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Om du anropar <code class=\"docutils literal notranslate\">none()</code> skapas en queryset som aldrig returnerar några objekt och ingen query kommer att köras vid åtkomst till resultaten. En <code class=\"docutils literal notranslate\">qs.none()</code> queryset är en instans av <code class=\"docutils literal notranslate\">EmptyQuerySet</code>.</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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>none<span class=\"p\">()</span>\n<span class=\"go\">&lt;QuerySet []&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.query</span> <span class=\"kn\">import</span> EmptyQuerySet\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">isinstance</span><span class=\"p\">(</span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>none<span class=\"p\">(),</span> EmptyQuerySet<span class=\"p\">)</span>\n<span class=\"go\">True</span>\n</code></pre></div>\n</section>\n<section id=\"all\">\n<h4><code class=\"docutils literal notranslate\">all()</code><a class=\"heading-anchor\" href=\"#all\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.all\">\n<span class=\"sig-name descname\">all</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.all\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returnerar en <em>kopia</em> av den aktuella <code class=\"docutils literal notranslate\">QuerySet</code> (eller <code class=\"docutils literal notranslate\">QuerySet</code>-underklassen). Detta kan vara användbart när du kanske vill skicka in antingen en modellhanterare eller en <code class=\"docutils literal notranslate\">QuerySet</code> och göra ytterligare filtrering av resultatet. Efter att du har anropat <code class=\"docutils literal notranslate\">all()</code> för något av objekten har du garanterat en <code class=\"docutils literal notranslate\">QuerySet</code> att arbeta med.</p>\n<p>När en <code class=\"docutils literal notranslate\">QuerySet</code> <a class=\"reference internal\" href=\"#when-querysets-are-evaluated\"><span class=\"std std-ref\">evaluated</span></a> utvärderas, lagras resultaten i cachen. Om data i databasen kan ha ändrats sedan en <code class=\"docutils literal notranslate\">QuerySet</code> utvärderades kan du få uppdaterade resultat för samma fråga genom att anropa <code class=\"docutils literal notranslate\">all()</code> på en tidigare utvärderad <code class=\"docutils literal notranslate\">QuerySet</code>.</p>\n</section>\n<section id=\"union\">\n<h4><code class=\"docutils literal notranslate\">union()</code><a class=\"heading-anchor\" href=\"#union\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.union\">\n<span class=\"sig-name descname\">union</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>other_qs</em>, <em class=\"sig-param\">all<span class=\"o\">=</span><span class=\"default_value\">False</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.union\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Använder SQL:s operator <code class=\"docutils literal notranslate\">UNION</code> för att kombinera resultaten från två eller flera <code class=\"docutils literal notranslate\">QuerySet</code>. Till exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>qs1<span class=\"o\">.</span>union<span class=\"p\">(</span>qs2<span class=\"p\">,</span> qs3<span class=\"p\">)</span>\n</code></pre></div>\n<p>Operatorn <code class=\"docutils literal notranslate\">UNION</code> väljer som standard endast distinkta värden. För att tillåta duplicerade värden, använd argumentet <code class=\"docutils literal notranslate\">all=True</code>.</p>\n<p><code class=\"docutils literal notranslate\">union()</code>, <code class=\"docutils literal notranslate\">intersection()</code> och <code class=\"docutils literal notranslate\">difference()</code> returnerar modellinstanser av typen för den första <code class=\"docutils literal notranslate\">QuerySet</code> även om argumenten är <code class=\"docutils literal notranslate\">QuerySet</code> av andra modeller. Att skicka olika modeller fungerar så länge som <code class=\"docutils literal notranslate\">SELECT</code>-listan är densamma i alla <code class=\"docutils literal notranslate\">QuerySet</code> (åtminstone typerna, namnen spelar ingen roll så länge som typerna är i samma ordning). I sådana fall måste du använda kolumnnamnen från det första <code class=\"docutils literal notranslate\">QuerySet</code> i <code class=\"docutils literal notranslate\">QuerySet</code>-metoder som tillämpas på det resulterande <code class=\"docutils literal notranslate\">QuerySet</code>. Till 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>qs1 <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>values_list<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>qs2 <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>values_list<span class=\"p\">(</span><span class=\"s2\">&quot;headline&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>qs1<span class=\"o\">.</span>union<span class=\"p\">(</span>qs2<span class=\"p\">)</span><span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Dessutom är endast <code class=\"docutils literal notranslate\">LIMIT</code>, <code class=\"docutils literal notranslate\">OFFSET</code>, <code class=\"docutils literal notranslate\">COUNT(*)</code>, <code class=\"docutils literal notranslate\">ORDER BY</code> och angivande av kolumner (dvs. skivning, <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.count\" title=\"django.db.models.query.QuerySet.count\"><code class=\"xref py py-meth docutils literal notranslate\">count()</code></a>, <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.exists\" title=\"django.db.models.query.QuerySet.exists\"><code class=\"xref py py-meth docutils literal notranslate\">exists()</code></a>, <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.order_by\" title=\"django.db.models.query.QuerySet.order_by\"><code class=\"xref py py-meth docutils literal notranslate\">order_by()</code></a> och <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.values\" title=\"django.db.models.query.QuerySet.values\"><code class=\"xref py py-meth docutils literal notranslate\">values()</code></a>/<a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.values_list\" title=\"django.db.models.query.QuerySet.values_list\"><code class=\"xref py py-meth docutils literal notranslate\">values_list()</code></a>) tillåtna för den resulterande <code class=\"docutils literal notranslate\">QuerySet</code>. Databaser begränsar dessutom vilka operationer som tillåts i de kombinerade frågorna. De flesta databaser tillåter till exempel inte <code class=\"docutils literal notranslate\">LIMIT</code> eller <code class=\"docutils literal notranslate\">OFFSET</code> i kombinerade frågor.</p>\n</section>\n<section id=\"intersection\">\n<h4><code class=\"docutils literal notranslate\">intersektion()</code><a class=\"heading-anchor\" href=\"#intersection\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.intersection\">\n<span class=\"sig-name descname\">intersection</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>other_qs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.intersection\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Använder SQL:s operator <code class=\"docutils literal notranslate\">INTERSECT</code> för att returnera de delade elementen i två eller flera <code class=\"docutils literal notranslate\">QuerySet</code>. Till 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>qs1<span class=\"o\">.</span>intersection<span class=\"p\">(</span>qs2<span class=\"p\">,</span> qs3<span class=\"p\">)</span>\n</code></pre></div>\n<p>Se <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.union\" title=\"django.db.models.query.QuerySet.union\"><code class=\"xref py py-meth docutils literal notranslate\">union()</code></a> för vissa begränsningar.</p>\n</section>\n<section id=\"difference\">\n<h4><code class=\"docutils literal notranslate\">skillnad()</code><a class=\"heading-anchor\" href=\"#difference\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.difference\">\n<span class=\"sig-name descname\">difference</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>other_qs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.difference\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Använder SQL:s operator <code class=\"docutils literal notranslate\">EXCEPT</code> för att endast behålla element som finns i <code class=\"docutils literal notranslate\">QuerySet</code> men inte i några andra <code class=\"docutils literal notranslate\">QuerySet</code>. Till 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>qs1<span class=\"o\">.</span>difference<span class=\"p\">(</span>qs2<span class=\"p\">,</span> qs3<span class=\"p\">)</span>\n</code></pre></div>\n<p>Se <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.union\" title=\"django.db.models.query.QuerySet.union\"><code class=\"xref py py-meth docutils literal notranslate\">union()</code></a> för vissa begränsningar.</p>\n</section>\n<section id=\"fetch-mode\">\n<h4><code class=\"docutils literal notranslate\">fetch_mode()</code><a class=\"heading-anchor\" href=\"#fetch-mode\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<aside class=\"version-note version-added\" data-version=\"6.1\" role=\"note\">\n<p class=\"version-note-title\">New in Django 6.1</p></aside>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.fetch_mode\">\n<span class=\"sig-name descname\">fetch_mode</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">mode</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.fetch_mode\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returnerar en <code class=\"docutils literal notranslate\">QuerySet</code> som anger det givna hämtningsläget för alla modellinstanser som skapas av denna <code class=\"docutils literal notranslate\">QuerySet</code>. Hämtningsläget styr inläsning av fält vid behov när de används, till exempel för främmande nycklar och uppskjutna fält. För att till exempel använda läget <a class=\"reference internal\" href=\"/sv/6.1/topics/db/fetch-modes/#django.db.models.FETCH_PEERS\" title=\"django.db.models.FETCH_PEERS\"><code class=\"xref py py-attr docutils literal notranslate\">FETCH_PEERS</code></a> för att gruppvis läsa in alla relaterade objekt vid första åtkomst:</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\nbooks <span class=\"o\">=</span> Book<span class=\"o\">.</span>objects<span class=\"o\">.</span>fetch_mode<span class=\"p\">(</span>models<span class=\"o\">.</span>FETCH_PEERS<span class=\"p\">)</span>\n</code></pre></div>\n<p>Se mer i <a class=\"reference internal\" href=\"/sv/6.1/topics/db/fetch-modes/\"><span class=\"doc\">ämnesguiden för hämtningslägen</span></a>.</p>\n</section>\n<section id=\"select-related\">\n<h4><code class=\"docutils literal notranslate\">select_related()</code><a class=\"heading-anchor\" href=\"#select-related\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.select_related\">\n<span class=\"sig-name descname\">select_related</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>fields</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.select_related\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returnerar en <code class=\"docutils literal notranslate\">QuerySet</code> som kopplar samman de namngivna främmande nyckel-relationerna och väljer ytterligare relaterade objekt när den utför sin fråga. Den här metoden kan öka prestandan genom att hämta data i förväg i stället för att utlösa inläsning vid behov genom modellinstansernas <a class=\"reference internal\" href=\"/sv/6.1/topics/db/fetch-modes/\"><span class=\"doc\">hämtningsläge</span></a>, men till priset av en mer komplex första fråga.</p>\n<p>Följande exempel illustrerar skillnaden mellan vanliga uppslagningar och <code class=\"docutils literal notranslate\">select_related()</code> uppslagningar. Här är en standarduppslagning:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># Hits the database.</span>\ne <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\">5</span><span class=\"p\">)</span>\n\n<span class=\"c1\"># Hits the database again to get the related Blog object.</span>\nb <span class=\"o\">=</span> e<span class=\"o\">.</span>blog\n</code></pre></div>\n<p>Och här är <code class=\"docutils literal notranslate\">select_related</code> lookup:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># Hits the database.</span>\ne <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>select_related<span class=\"p\">(</span><span class=\"s2\">&quot;blog&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">5</span><span class=\"p\">)</span>\n\n<span class=\"c1\"># Doesn&#39;t hit the database, because e.blog has been prepopulated</span>\n<span class=\"c1\"># in the previous query.</span>\nb <span class=\"o\">=</span> e<span class=\"o\">.</span>blog\n</code></pre></div>\n<p>Du kan använda <code class=\"docutils literal notranslate\">select_related()</code> med vilken frågeuppsättning som helst. Ordningen i kedjning med andra metoder är inte viktig. Följande frågeuppsättningar är till exempel likvärdiga:</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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__gt<span class=\"o\">=</span>timezone<span class=\"o\">.</span>now<span class=\"p\">())</span><span class=\"o\">.</span>select_related<span class=\"p\">(</span><span class=\"s2\">&quot;blog&quot;</span><span class=\"p\">)</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>select_related<span class=\"p\">(</span><span class=\"s2\">&quot;blog&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__gt<span class=\"o\">=</span>timezone<span class=\"o\">.</span>now<span class=\"p\">())</span>\n</code></pre></div>\n<p>Du kan följa utländska nycklar på liknande sätt som du frågar dem. Om du har följande modeller:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">City</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\">Person</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    <span class=\"c1\"># ...</span>\n    hometown <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>\n        City<span class=\"p\">,</span>\n        on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>SET_NULL<span class=\"p\">,</span>\n        blank<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span>\n        null<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span>\n    <span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Book</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    <span class=\"c1\"># ...</span>\n    author <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>Person<span class=\"p\">,</span> on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">)</span>\n</code></pre></div>\n<p>Då kommer ett anrop till <code class=\"docutils literal notranslate\">Book.objects.select_related('author__hometown').get(id=4)</code> att cachelagra den relaterade <code class=\"docutils literal notranslate\">Person</code> <em>och</em> den relaterade <code class=\"docutils literal notranslate\">City</code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># Hits the database with joins to the author and hometown tables.</span>\nb <span class=\"o\">=</span> Book<span class=\"o\">.</span>objects<span class=\"o\">.</span>select_related<span class=\"p\">(</span><span class=\"s2\">&quot;author__hometown&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">4</span><span class=\"p\">)</span>\np <span class=\"o\">=</span> b<span class=\"o\">.</span>author  <span class=\"c1\"># Doesn&#39;t hit the database.</span>\nc <span class=\"o\">=</span> p<span class=\"o\">.</span>hometown  <span class=\"c1\"># Doesn&#39;t hit the database.</span>\n\n<span class=\"c1\"># Without select_related()...</span>\nb <span class=\"o\">=</span> Book<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\">4</span><span class=\"p\">)</span>  <span class=\"c1\"># Hits the database.</span>\np <span class=\"o\">=</span> b<span class=\"o\">.</span>author  <span class=\"c1\"># Hits the database.</span>\nc <span class=\"o\">=</span> p<span class=\"o\">.</span>hometown  <span class=\"c1\"># Hits the database.</span>\n</code></pre></div>\n<p>Du kan hänvisa till alla <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> eller <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.OneToOneField\" title=\"django.db.models.OneToOneField\"><code class=\"xref py py-class docutils literal notranslate\">OneToOneField</code></a>-relationer i listan över fält som skickas till <code class=\"docutils literal notranslate\">select_related()</code>.</p>\n<p>Du kan också hänvisa till den omvända riktningen för en <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.OneToOneField\" title=\"django.db.models.OneToOneField\"><code class=\"xref py py-class docutils literal notranslate\">OneToOneField</code></a> i listan över fält som skickas till <code class=\"docutils literal notranslate\">select_related</code> - det vill säga, du kan traversera en <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.OneToOneField\" title=\"django.db.models.OneToOneField\"><code class=\"xref py py-class docutils literal notranslate\">OneToOneField</code></a> tillbaka till det objekt som fältet är definierat på. Istället för att ange fältnamnet, använd <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.ForeignKey.related_name\" title=\"django.db.models.ForeignKey.related_name\"><code class=\"xref py py-attr docutils literal notranslate\">related_name</code></a> för fältet på det relaterade objektet.</p>\n<p>Om du behöver rensa listan över relaterade fält som lagts till genom tidigare anrop av <code class=\"docutils literal notranslate\">select_related</code> på en <code class=\"docutils literal notranslate\">QuerySet</code>, kan du ange <code class=\"docutils literal notranslate\">None</code> som parameter:</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>without_relations <span class=\"o\">=</span> queryset<span class=\"o\">.</span>select_related<span class=\"p\">(</span><span class=\"kc\">None</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Att kedja <code class=\"docutils literal notranslate\">select_related</code>-anrop fungerar på samma sätt som andra metoder - det vill säga att <code class=\"docutils literal notranslate\">select_related('foo', 'bar')</code> är likvärdigt med <code class=\"docutils literal notranslate\">select_related('foo').select_related('bar')</code>.</p>\n<p>Det kan finnas situationer där du vill anropa <code class=\"docutils literal notranslate\">select_related()</code> med många relaterade objekt, eller där du inte känner till alla relationer. I dessa fall är det möjligt att anropa <code class=\"docutils literal notranslate\">select_related()</code> utan argument. Detta kommer att följa alla utländska nycklar som inte är noll - utländska nycklar som kan nollställas måste anges. Detta rekommenderas inte i de flesta fall eftersom det sannolikt kommer att göra den underliggande frågan mer komplex och returnera mer data än vad som faktiskt behövs.</p>\n<aside class=\"version-note version-deprecated\" data-version=\"6.1\" role=\"note\">\n<p class=\"version-note-title\">Deprecated since Django 6.1</p><p><span class=\"versionmodified deprecated\">Ersatt sedan version 6.1: </span>Calling <code class=\"docutils literal notranslate\">select_related()</code> with no arguments is deprecated, and support\nfor it will be removed in Django 2028. Specify the fields to fetch instead.</p>\n</aside>\n</section>\n<section id=\"prefetch-related\">\n<h4><code class=\"docutils literal notranslate\">prefetch_related()</code><a class=\"heading-anchor\" href=\"#prefetch-related\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.prefetch_related\">\n<span class=\"sig-name descname\">prefetch_related</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>lookups</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.prefetch_related\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returnerar en <code class=\"docutils literal notranslate\">QuerySet</code> som automatiskt hämtar de angivna uppslagen, vart och ett i en extra gruppfråga. Förinläsning är ett sätt att optimera databasåtkomst när du vet att du senare kommer att använda relaterade objekt, så att du kan undvika att utlösa modellinstansernas <a class=\"reference internal\" href=\"/sv/6.1/topics/db/fetch-modes/\"><span class=\"doc\">hämtningsläge</span></a> för inläsning vid behov.</p>\n<p>Den här metoden har ett liknande syfte som <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.select_related\" title=\"django.db.models.query.QuerySet.select_related\"><code class=\"xref py py-meth docutils literal notranslate\">select_related()</code></a>, eftersom båda är avsedda att hämta relaterade objekt i förväg. De fungerar dock på olika sätt.</p>\n<p><code class=\"docutils literal notranslate\">select_related</code> fungerar genom att skapa en SQL-joint och inkludera fälten för det relaterade objektet i <code class=\"docutils literal notranslate\">SELECT</code>-satsen. Av denna anledning får <code class=\"docutils literal notranslate\">select_related</code> de relaterade objekten i samma databasfråga. Men för att undvika den mycket större resultatuppsättning som skulle bli resultatet av att länka över en ”många”-relation, är <code class=\"docutils literal notranslate\">select_related</code> begränsad till relationer med en enda värde - främmande nyckel och en-till-en.</p>\n<p><code class=\"docutils literal notranslate\">prefetch_related</code>, å andra sidan, gör en separat sökning för varje relation och gör ”sammanfogningen” i Python. Detta gör det möjligt att hämta många-till-många, många-till-en och <a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/contenttypes/#django.contrib.contenttypes.fields.GenericRelation\" title=\"django.contrib.contenttypes.fields.GenericRelation\"><code class=\"xref py py-class docutils literal notranslate\">GenericRelation</code></a>-objekt som inte kan göras med <code class=\"docutils literal notranslate\">select_related</code>, utöver de främmande nycklar och en-till-en-relationer som stöds av <code class=\"docutils literal notranslate\">select_related</code>. Den stöder också prefetching av <a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/contenttypes/#django.contrib.contenttypes.fields.GenericForeignKey\" title=\"django.contrib.contenttypes.fields.GenericForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">GenericForeignKey</code></a>, men queryset för varje <code class=\"docutils literal notranslate\">ContentType</code> måste tillhandahållas i parametern <code class=\"docutils literal notranslate\">querysets</code> i <a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/contenttypes/#django.contrib.contenttypes.prefetch.GenericPrefetch\" title=\"django.contrib.contenttypes.prefetch.GenericPrefetch\"><code class=\"xref py py-class docutils literal notranslate\">GenericPrefetch</code></a>.</p>\n<p>Anta till exempel att du har dessa modeller:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Topping</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">30</span><span class=\"p\">)</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    name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n    toppings <span class=\"o\">=</span> models<span class=\"o\">.</span>ManyToManyField<span class=\"p\">(</span>Topping<span class=\"p\">)</span>\n\n    <span class=\"k\">def</span> <span class=\"fm\">__str__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"s2\">&quot;</span><span class=\"si\">%s</span><span class=\"s2\"> (</span><span class=\"si\">%s</span><span class=\"s2\">)&quot;</span> <span class=\"o\">%</span> <span class=\"p\">(</span>\n            <span class=\"bp\">self</span><span class=\"o\">.</span>name<span class=\"p\">,</span>\n            <span class=\"s2\">&quot;, &quot;</span><span class=\"o\">.</span>join<span class=\"p\">(</span>topping<span class=\"o\">.</span>name <span class=\"k\">for</span> topping <span class=\"ow\">in</span> <span class=\"bp\">self</span><span class=\"o\">.</span>toppings<span class=\"o\">.</span>all<span class=\"p\">()),</span>\n        <span class=\"p\">)</span>\n</code></pre></div>\n<p>och kö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>Pizza<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()</span>\n<span class=\"go\">&lt;QuerySet [&lt;Pizza: Hawaiian (ham, pineapple)&gt;, &lt;Pizza: Seafood (prawns, smoked salmon)&gt;, ...]&gt;</span>\n</code></pre></div>\n<p>Problemet med detta är att varje gång <code class=\"docutils literal notranslate\">Pizza.__str__()</code> ber om <code class=\"docutils literal notranslate\">self.toppings.all()</code> måste den fråga databasen, så <code class=\"docutils literal notranslate\">Pizza.objects.all()</code> kommer att köra en fråga på Toppings-tabellen för <strong>varje</strong> objekt i Pizza <code class=\"docutils literal notranslate\">QuerySet</code>.</p>\n<p>Vi kan reducera till bara två frågor med hjälp av <code class=\"docutils literal notranslate\">prefetch_related</code>:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Pizza<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span><span class=\"s2\">&quot;toppings&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Detta innebär en <code class=\"docutils literal notranslate\">self.toppings.all()</code> för varje <code class=\"docutils literal notranslate\">Pizza</code>; nu varje gång <code class=\"docutils literal notranslate\">self.toppings.all()</code> anropas, i stället för att behöva gå till databasen för objekten, kommer det att hitta dem i en prefetched <code class=\"docutils literal notranslate\">QuerySet</code> cache som fylldes i en enda fråga.</p>\n<p>Det vill säga att alla relevanta toppningar har hämtats i en enda fråga och använts för att skapa <code class=\"docutils literal notranslate\">QuerySet</code>-instanser som har en förfylld cache av de relevanta resultaten; dessa används sedan i <code class=\"docutils literal notranslate\">self.toppings.all()</code>-anropen.</p>\n<p>De ytterligare frågorna i <code class=\"docutils literal notranslate\">prefetch_related()</code> exekveras efter att <code class=\"docutils literal notranslate\">QuerySet</code> har börjat utvärderas och den primära frågan har exekverats.</p>\n<p>Observera att det inte finns någon mekanism för att förhindra att en annan databasfråga ändrar objekten mellan den primära frågan och de ytterligare frågorna, vilket kan ge ett inkonsekvent resultat. Om t.ex. en <code class=\"docutils literal notranslate\">Pizza</code> tas bort efter att den primära frågan har körts kommer dess pålägg inte att returneras i den ytterligare frågan och det kommer att se ut som om pizzan inte har något pålägg:</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>Pizza<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span><span class=\"s2\">&quot;toppings&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">#  &quot;Hawaiian&quot; Pizza was deleted in another shell.</span>\n<span class=\"go\">&lt;QuerySet [&lt;Pizza: Hawaiian ()&gt;, &lt;Pizza: Seafood (prawns, smoked salmon)&gt;]&gt;</span>\n</code></pre></div>\n<p>Om du har en iterabel av modellinstanser kan du hämta relaterade attribut på dessa instanser med hjälp av funktionen <a class=\"reference internal\" href=\"#django.db.models.prefetch_related_objects\" title=\"django.db.models.prefetch_related_objects\"><code class=\"xref py py-func docutils literal notranslate\">prefetch_related_objects()</code></a>.</p>\n<p>Observera att resultatcachen för det primära <code class=\"docutils literal notranslate\">QuerySet</code> och alla angivna relaterade objekt då kommer att laddas fullt ut i minnet. Detta ändrar det typiska beteendet för ett <code class=\"docutils literal notranslate\">QuerySet</code>, som normalt försöker undvika att ladda alla objekt i minnet innan de behövs, även efter att en fråga har körts i databasen.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Kom ihåg att, som alltid med <code class=\"docutils literal notranslate\">QuerySet</code>-objekt, kommer alla efterföljande kedjade metoder som innebär en annan databasfråga att ignorera tidigare cachade resultat och hämta data med en ny databasfråga. Så om du skriver följande:</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>pizzas <span class=\"o\">=</span> Pizza<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span><span class=\"s2\">&quot;toppings&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"p\">[</span><span class=\"nb\">list</span><span class=\"p\">(</span>pizza<span class=\"o\">.</span>toppings<span class=\"o\">.</span>filter<span class=\"p\">(</span>spicy<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">))</span> <span class=\"k\">for</span> pizza <span class=\"ow\">in</span> pizzas<span class=\"p\">]</span>\n</code></pre></div>\n<p>…då kommer det faktum att <code class=\"docutils literal notranslate\">pizza.toppings.all()</code> har prefetchats inte att hjälpa dig. <code class=\"docutils literal notranslate\">prefetch_related('toppings')</code> implicerade <code class=\"docutils literal notranslate\">pizza.toppings.all()</code>, men <code class=\"docutils literal notranslate\">pizza.toppings.filter()</code> är en ny och annorlunda fråga. Här hjälper inte den prefetchade cachen, utan den försämrar faktiskt prestandan, eftersom du har gjort en databasfråga som du inte har använt. Så använd den här funktionen med försiktighet!</p>\n<p>Om du anropar databasändrande metoder <a class=\"reference internal\" href=\"/sv/6.1/ref/models/relations/#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>, <a class=\"reference internal\" href=\"/sv/6.1/ref/models/relations/#django.db.models.fields.related.RelatedManager.create\" title=\"django.db.models.fields.related.RelatedManager.create\"><code class=\"xref py py-meth docutils literal notranslate\">create()</code></a>, <a class=\"reference internal\" href=\"/sv/6.1/ref/models/relations/#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>, <a class=\"reference internal\" href=\"/sv/6.1/ref/models/relations/#django.db.models.fields.related.RelatedManager.clear\" title=\"django.db.models.fields.related.RelatedManager.clear\"><code class=\"xref py py-meth docutils literal notranslate\">clear()</code></a> eller <a class=\"reference internal\" href=\"/sv/6.1/ref/models/relations/#django.db.models.fields.related.RelatedManager.set\" title=\"django.db.models.fields.related.RelatedManager.set\"><code class=\"xref py py-meth docutils literal notranslate\">set()</code></a> på en <a class=\"reference internal\" href=\"/sv/6.1/ref/models/relations/#django.db.models.fields.related.RelatedManager\" title=\"django.db.models.fields.related.RelatedManager\"><code class=\"xref py py-class docutils literal notranslate\">RelatedManager</code></a> rensas dessutom alla förhämtade cacheposter för relationen.</p>\n</aside>\n<p>Du kan också använda den vanliga join-syntaxen för att göra relaterade fält av relaterade fält. Anta att vi har en ytterligare modell till exemplet ovan:</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\">Restaurant</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    pizzas <span class=\"o\">=</span> models<span class=\"o\">.</span>ManyToManyField<span class=\"p\">(</span>Pizza<span class=\"p\">,</span> related_name<span class=\"o\">=</span><span class=\"s2\">&quot;restaurants&quot;</span><span class=\"p\">)</span>\n    best_pizza <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>\n        Pizza<span class=\"p\">,</span> related_name<span class=\"o\">=</span><span class=\"s2\">&quot;championed_by&quot;</span><span class=\"p\">,</span> on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE\n    <span class=\"p\">)</span>\n</code></pre></div>\n<p>Följande är alla lagliga:</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>Restaurant<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span><span class=\"s2\">&quot;pizzas__toppings&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Detta kommer att hämta alla pizzor som tillhör restauranger och alla pålägg som hör till dessa pizzor. Detta kommer att resultera i totalt 3 databasfrågor - en för restaurangerna, en för pizzorna och en för påläggen.</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>Restaurant<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span><span class=\"s2\">&quot;best_pizza__toppings&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Detta kommer att hämta den bästa pizzan och alla toppings för den bästa pizzan för varje restaurang. Detta kommer att göras i 3 databasfrågor - en för restaurangerna, en för de ”bästa pizzorna” och en för toppingen.</p>\n<p>Relationen <code class=\"docutils literal notranslate\">best_pizza</code> kan också hämtas med hjälp av <code class=\"docutils literal notranslate\">select_related</code> för att minska antalet frågor till 2:</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>Restaurant<span class=\"o\">.</span>objects<span class=\"o\">.</span>select_related<span class=\"p\">(</span><span class=\"s2\">&quot;best_pizza&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span><span class=\"s2\">&quot;best_pizza__toppings&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Eftersom prefetch körs efter huvudfrågan (som innehåller de joins som behövs av <code class=\"docutils literal notranslate\">select_related</code>) kan den upptäcka att <code class=\"docutils literal notranslate\">best_pizza</code>-objekten redan har hämtats, och den hoppar över att hämta dem igen.</p>\n<p>Om du kedjar <code class=\"docutils literal notranslate\">prefetch_related</code>-anrop ackumuleras de uppslagningar som är prefetchade. För att rensa alla <code class=\"docutils literal notranslate\">prefetch_related</code> beteenden, skicka <code class=\"docutils literal notranslate\">None</code> som en parameter:</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>non_prefetched <span class=\"o\">=</span> qs<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span><span class=\"kc\">None</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>En skillnad att notera när du använder <code class=\"docutils literal notranslate\">prefetch_related</code> är att objekt som skapas av en fråga kan delas mellan de olika objekt som de är relaterade till, dvs. en enda Python-modellinstans kan förekomma på mer än en punkt i trädet av objekt som returneras. Detta kommer normalt att hända med främmande nyckelrelationer. Vanligtvis är detta beteende inte ett problem och sparar faktiskt både minne och CPU-tid.</p>\n<p>Även om <code class=\"docutils literal notranslate\">prefetch_related</code> stöder förhandshämtning av <code class=\"docutils literal notranslate\">GenericForeignKey</code>-relationer, beror antalet frågor på data. Eftersom en <code class=\"docutils literal notranslate\">GenericForeignKey</code> kan referera till data i flera tabeller behövs en fråga per tabell som refereras till, snarare än en fråga för alla objekt. Det kan bli ytterligare frågor på tabellen <code class=\"docutils literal notranslate\">ContentType</code> om de relevanta raderna inte redan har hämtats.</p>\n<p><code class=\"docutils literal notranslate\">prefetch_related</code> kommer i de flesta fall att implementeras med hjälp av en SQL-fråga som använder operatorn ’IN’. Detta innebär att för en stor <code class=\"docutils literal notranslate\">QuerySet</code> kan en stor ’IN’-klausul genereras, vilket, beroende på databasen, kan ha egna prestandaproblem när det gäller att tolka eller exekvera SQL-frågan. Profilera alltid för ditt användningsfall!</p>\n<p>Om du använder <code class=\"docutils literal notranslate\">iterator()</code> för att köra frågan, kommer <code class=\"docutils literal notranslate\">prefetch_related()</code>-anrop endast att observeras om ett värde för <code class=\"docutils literal notranslate\">chunk_size</code> anges.</p>\n<p>Du kan använda <a class=\"reference internal\" href=\"#django.db.models.Prefetch\" title=\"django.db.models.Prefetch\"><code class=\"xref py py-class docutils literal notranslate\">Prefetch</code></a>-objektet för att ytterligare kontrollera prefetch-operationen.</p>\n<p>I sin enklaste form motsvarar <code class=\"docutils literal notranslate\">Prefetch</code> de traditionella strängbaserade uppslagningarna:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> Prefetch\n<span class=\"gp\">&gt;&gt;&gt; </span>Restaurant<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span>Prefetch<span class=\"p\">(</span><span class=\"s2\">&quot;pizzas__toppings&quot;</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>Du kan ange en egen queryset med det valfria argumentet <code class=\"docutils literal notranslate\">queryset</code>. Detta kan användas för att ändra standardordningen för queryset:</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>Restaurant<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    Prefetch<span class=\"p\">(</span><span class=\"s2\">&quot;pizzas__toppings&quot;</span><span class=\"p\">,</span> queryset<span class=\"o\">=</span>Toppings<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">))</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Eller anropa <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.select_related\" title=\"django.db.models.query.QuerySet.select_related\"><code class=\"xref py py-meth docutils literal notranslate\">select_related()</code></a> när det är tillämpligt för att minska antalet frågor ytterligare:</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>Pizza<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    Prefetch<span class=\"p\">(</span><span class=\"s2\">&quot;restaurants&quot;</span><span class=\"p\">,</span> queryset<span class=\"o\">=</span>Restaurant<span class=\"o\">.</span>objects<span class=\"o\">.</span>select_related<span class=\"p\">(</span><span class=\"s2\">&quot;best_pizza&quot;</span><span class=\"p\">))</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Du kan också tilldela det förhämtade resultatet till ett anpassat attribut med det valfria argumentet <code class=\"docutils literal notranslate\">to_attr</code>. Resultatet kommer att lagras direkt i en lista.</p>\n<p>Detta gör det möjligt att hämta samma relation flera gånger med en annan <code class=\"docutils literal notranslate\">QuerySet</code>; till 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>vegetarian_pizzas <span class=\"o\">=</span> Pizza<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>vegetarian<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Restaurant<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    Prefetch<span class=\"p\">(</span><span class=\"s2\">&quot;pizzas&quot;</span><span class=\"p\">,</span> to_attr<span class=\"o\">=</span><span class=\"s2\">&quot;menu&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    Prefetch<span class=\"p\">(</span><span class=\"s2\">&quot;pizzas&quot;</span><span class=\"p\">,</span> queryset<span class=\"o\">=</span>vegetarian_pizzas<span class=\"p\">,</span> to_attr<span class=\"o\">=</span><span class=\"s2\">&quot;vegetarian_menu&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Lookups som skapats med anpassad <code class=\"docutils literal notranslate\">to_attr</code> kan fortfarande genomkorsas som vanligt av andra lookups:</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>vegetarian_pizzas <span class=\"o\">=</span> Pizza<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>vegetarian<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Restaurant<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    Prefetch<span class=\"p\">(</span><span class=\"s2\">&quot;pizzas&quot;</span><span class=\"p\">,</span> queryset<span class=\"o\">=</span>vegetarian_pizzas<span class=\"p\">,</span> to_attr<span class=\"o\">=</span><span class=\"s2\">&quot;vegetarian_menu&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;vegetarian_menu__toppings&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Det rekommenderas att använda <code class=\"docutils literal notranslate\">to_attr</code> när man filtrerar ner prefetch-resultatet eftersom det är mindre tvetydigt än att lagra ett filtrerat resultat i den relaterade hanterarens cache:</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>queryset <span class=\"o\">=</span> Pizza<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>vegetarian<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Recommended:</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>restaurants <span class=\"o\">=</span> Restaurant<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    Prefetch<span class=\"p\">(</span><span class=\"s2\">&quot;pizzas&quot;</span><span class=\"p\">,</span> queryset<span class=\"o\">=</span>queryset<span class=\"p\">,</span> to_attr<span class=\"o\">=</span><span class=\"s2\">&quot;vegetarian_pizzas&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vegetarian_pizzas <span class=\"o\">=</span> restaurants<span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"o\">.</span>vegetarian_pizzas\n<span class=\"gp\">&gt;&gt;&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Not recommended:</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>restaurants <span class=\"o\">=</span> Restaurant<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    Prefetch<span class=\"p\">(</span><span class=\"s2\">&quot;pizzas&quot;</span><span class=\"p\">,</span> queryset<span class=\"o\">=</span>queryset<span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vegetarian_pizzas <span class=\"o\">=</span> restaurants<span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"o\">.</span>pizzas<span class=\"o\">.</span>all<span class=\"p\">()</span>\n</code></pre></div>\n<p>Anpassad förinläsning fungerar också med enskilda relaterade relationer som framåtriktade <code class=\"docutils literal notranslate\">ForeignKey</code> eller <code class=\"docutils literal notranslate\">OneToOneField</code>. I allmänhet vill du använda <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.select_related\" title=\"django.db.models.query.QuerySet.select_related\"><code class=\"xref py py-meth docutils literal notranslate\">select_related()</code></a> för dessa relationer, men det finns ett antal fall där förinläsning med en anpassad <code class=\"docutils literal notranslate\">QuerySet</code> är användbar:</p>\n<ul>\n<li><p>Du vill använda en <code class=\"docutils literal notranslate\">QuerySet</code> som utför ytterligare prefetching på relaterade modeller.</p></li>\n<li><p>Du vill bara hämta en delmängd av de relaterade objekten i förväg.</p></li>\n<li><p>Du vill använda tekniker för prestandaoptimering, till exempel skjuta upp fält, via <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.defer\" title=\"django.db.models.query.QuerySet.defer\"><code class=\"xref py py-meth docutils literal notranslate\">defer()</code></a> eller <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.only\" title=\"django.db.models.query.QuerySet.only\"><code class=\"xref py py-meth docutils literal notranslate\">only()</code></a>:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>queryset <span class=\"o\">=</span> Pizza<span class=\"o\">.</span>objects<span class=\"o\">.</span>only<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>restaurants <span class=\"o\">=</span> Restaurant<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    Prefetch<span class=\"p\">(</span><span class=\"s2\">&quot;best_pizza&quot;</span><span class=\"p\">,</span> queryset<span class=\"o\">=</span>queryset<span class=\"p\">)</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n</code></pre></div>\n</li>\n</ul>\n<p>Vid användning av flera databaser kommer <code class=\"docutils literal notranslate\">Prefetch</code> att respektera ditt val av databas. Om den inre frågan inte anger någon databas kommer den att använda den databas som valts av den yttre frågan. Alla följande är giltiga:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Both inner and outer queries will use the &#39;replica&#39; database</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Restaurant<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span><span class=\"s2\">&quot;pizzas__toppings&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>using<span class=\"p\">(</span><span class=\"s2\">&quot;replica&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Restaurant<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    Prefetch<span class=\"p\">(</span><span class=\"s2\">&quot;pizzas__toppings&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>using<span class=\"p\">(</span><span class=\"s2\">&quot;replica&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Inner will use the &#39;replica&#39; database; outer will use &#39;default&#39; database</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Restaurant<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    Prefetch<span class=\"p\">(</span><span class=\"s2\">&quot;pizzas__toppings&quot;</span><span class=\"p\">,</span> queryset<span class=\"o\">=</span>Toppings<span class=\"o\">.</span>objects<span class=\"o\">.</span>using<span class=\"p\">(</span><span class=\"s2\">&quot;replica&quot;</span><span class=\"p\">)),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Inner will use &#39;replica&#39; database; outer will use &#39;cold-storage&#39; database</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Restaurant<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    Prefetch<span class=\"p\">(</span><span class=\"s2\">&quot;pizzas__toppings&quot;</span><span class=\"p\">,</span> queryset<span class=\"o\">=</span>Toppings<span class=\"o\">.</span>objects<span class=\"o\">.</span>using<span class=\"p\">(</span><span class=\"s2\">&quot;replica&quot;</span><span class=\"p\">)),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>using<span class=\"p\">(</span><span class=\"s2\">&quot;cold-storage&quot;</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>Ordningen på uppslagningarna är viktig.</p>\n<p>Ta följande 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>prefetch_related<span class=\"p\">(</span><span class=\"s2\">&quot;pizzas__toppings&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;pizzas&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Detta fungerar även om det inte är ordnat eftersom <code class=\"docutils literal notranslate\">'pizzas__toppings'</code> redan innehåller all nödvändig information, och därför är det andra argumentet <code class=\"docutils literal notranslate\">'pizzas'</code> faktiskt överflödigt.</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>prefetch_related<span class=\"p\">(</span><span class=\"s2\">&quot;pizzas__toppings&quot;</span><span class=\"p\">,</span> Prefetch<span class=\"p\">(</span><span class=\"s2\">&quot;pizzas&quot;</span><span class=\"p\">,</span> queryset<span class=\"o\">=</span>Pizza<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()))</span>\n</code></pre></div>\n<p>Detta kommer att ge upphov till ett <code class=\"docutils literal notranslate\">ValueError</code> på grund av försöket att omdefiniera queryset för en tidigare sedd uppslagning. Notera att en implicit queryset skapades för att traversera <code class=\"docutils literal notranslate\">'pizzas</code> som en del av <code class=\"docutils literal notranslate\">'pizzas__toppings</code> lookup.</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>prefetch_related<span class=\"p\">(</span><span class=\"s2\">&quot;pizza_list__toppings&quot;</span><span class=\"p\">,</span> Prefetch<span class=\"p\">(</span><span class=\"s2\">&quot;pizzas&quot;</span><span class=\"p\">,</span> to_attr<span class=\"o\">=</span><span class=\"s2\">&quot;pizza_list&quot;</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>Detta kommer att utlösa ett <code class=\"docutils literal notranslate\">AttributeError</code> eftersom <code class=\"docutils literal notranslate\">'pizza_list'</code> inte existerar ännu när <code class=\"docutils literal notranslate\">'pizza_list__toppings'</code> bearbetas.</p>\n<p>Detta övervägande är inte begränsat till användningen av <code class=\"docutils literal notranslate\">Prefetch</code>-objekt. Vissa avancerade tekniker kan kräva att uppslagningarna utförs i en viss ordning för att undvika att skapa extra frågor; därför rekommenderas det att alltid noggrant ordna <code class=\"docutils literal notranslate\">prefetch_related</code> argument.</p>\n</aside>\n</section>\n<section id=\"extra\">\n<h4><code class=\"docutils literal notranslate\">extra()</code><a class=\"heading-anchor\" href=\"#extra\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.extra\">\n<span class=\"sig-name descname\">extra</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">select<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">where<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">params<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">tables<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">order_by<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">select_params<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.extra\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Ibland kan Djangos frågesyntax i sig inte enkelt uttrycka en komplex <code class=\"docutils literal notranslate\">WHERE</code>-klausul. För dessa kantfall tillhandahåller Django modifieraren <code class=\"docutils literal notranslate\">extra()</code> <code class=\"docutils literal notranslate\">QuerySet</code> - en hook för att injicera specifika klausuler i SQL som genereras av en <code class=\"docutils literal notranslate\">QuerySet</code>.</p>\n<aside class=\"admonition-use-this-method-as-a-last-resort admonition\" role=\"note\">\n<p class=\"admonition-title\">Använd denna metod som en sista utväg</p>\n<p>Detta är ett gammalt API som vi avser att avveckla någon gång i framtiden. Använd det bara om du inte kan uttrycka din fråga med andra frågeuppsättningsmetoder. Om du ändå måste använda det, <a class=\"reference external\" href=\"https://code.djangoproject.com/newticket\">skapa ett ärende</a> med nyckelordet <a class=\"reference external\" href=\"https://code.djangoproject.com/query?keywords=~QuerySet.extra\">QuerySet.extra</a> och ditt användningsfall (kontrollera först listan över befintliga ärenden), så att vi kan utveckla QuerySet-API:t så att <code class=\"docutils literal notranslate\">extra()</code> kan tas bort. Vi förbättrar inte längre eller åtgärdar fel i den här metoden.</p>\n<p>Till exempel: denna användning av <code class=\"docutils literal notranslate\">extra()</code>:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>qs<span class=\"o\">.</span>extra<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    select<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;val&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;select col from sometable where othercol = </span><span class=\"si\">%s</span><span class=\"s2\">&quot;</span><span class=\"p\">},</span>\n<span class=\"gp\">... </span>    select_params<span class=\"o\">=</span><span class=\"p\">(</span>someparam<span class=\"p\">,),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n</code></pre></div>\n<p>är likvärdig med:</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>qs<span class=\"o\">.</span>annotate<span class=\"p\">(</span>val<span class=\"o\">=</span>RawSQL<span class=\"p\">(</span><span class=\"s2\">&quot;select col from sometable where othercol = </span><span class=\"si\">%s</span><span class=\"s2\">&quot;</span><span class=\"p\">,</span> <span class=\"p\">(</span>someparam<span class=\"p\">,)))</span>\n</code></pre></div>\n<p>Den största fördelen med att använda <a class=\"reference internal\" href=\"/sv/6.1/ref/models/expressions/#django.db.models.expressions.RawSQL\" title=\"django.db.models.expressions.RawSQL\"><code class=\"xref py py-class docutils literal notranslate\">RawSQL</code></a> är att du kan ställa in <code class=\"docutils literal notranslate\">output_field</code> om det behövs. Den största nackdelen är att om du hänvisar till något tabellalias för queryset i den råa SQL, så är det möjligt att Django kan ändra det aliaset (till exempel när queryset används som en underfråga i ännu en fråga).</p>\n</aside>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>Du bör vara mycket försiktig när du använder <code class=\"docutils literal notranslate\">extra()</code>. Varje gång du använder den bör du undkomma alla parametrar som användaren kan kontrollera med hjälp av <code class=\"docutils literal notranslate\">params</code> för att skydda mot SQL-injektionsattacker.</p>\n<p>Du får inte heller använda citattecken för platshållare i SQL-strängen. Det här exemplet är sårbart för SQL-injektion på grund av citaten runt <code class=\"docutils literal notranslate\">%s</code>:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> col <span class=\"k\">FROM</span> sometable <span class=\"k\">WHERE</span> othercol <span class=\"o\">=</span> <span class=\"s1\">&#39;%s&#39;</span>  <span class=\"o\">#</span> unsafe<span class=\"o\">!</span>\n</code></pre></div>\n<p>Du kan läsa mer om hur Djangos <a class=\"reference internal\" href=\"/sv/6.1/topics/security/#sql-injection-protection\"><span class=\"std std-ref\">SQL injection protection</span></a> fungerar.</p>\n</aside>\n<p>Per definition kan dessa extra uppslagningar inte vara portabla till olika databasmotorer (eftersom du uttryckligen skriver SQL-kod) och bryter mot DRY-principen, så du bör undvika dem om möjligt.</p>\n<p>Ange ett eller flera av <code class=\"docutils literal notranslate\">params</code>, <code class=\"docutils literal notranslate\">select</code>, <code class=\"docutils literal notranslate\">where</code> eller <code class=\"docutils literal notranslate\">tables</code>. Inget av argumenten är obligatoriskt, men du bör använda minst ett av dem.</p>\n<ul>\n<li><p><code class=\"docutils literal notranslate\">välja</code></p>\n<p>Argumentet <code class=\"docutils literal notranslate\">select</code> låter dig lägga till extra fält i <code class=\"docutils literal notranslate\">SELECT</code>-satsen. Det ska vara en ordbok som kopplar attributnamn till SQL-satser som används för att beräkna attributet.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>extra<span class=\"p\">(</span>select<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;is_recent&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;pub_date &gt; &#39;2006-01-01&#39;&quot;</span><span class=\"p\">})</span>\n</code></pre></div>\n<p>Som ett resultat kommer varje <code class=\"docutils literal notranslate\">Entry</code>-objekt att ha ett extra attribut, <code class=\"docutils literal notranslate\">is_recent</code>, ett boolean som anger om postens <code class=\"docutils literal notranslate\">pub_date</code> är större än 1 januari 2006.</p>\n<p>Django infogar det angivna SQL-utdraget direkt i <code class=\"docutils literal notranslate\">SELECT</code>-satsen, så den resulterande SQL i ovanstående exempel skulle vara något liknande:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> blog_entry<span class=\"p\">.</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"p\">(</span>pub_date <span class=\"o\">&gt;</span> <span class=\"s1\">&#39;2006-01-01&#39;</span><span class=\"p\">)</span> <span class=\"k\">AS</span> is_recent\n<span class=\"k\">FROM</span> blog_entry<span class=\"p\">;</span>\n</code></pre></div>\n<p>Nästa exempel är mer avancerat; det gör en underfråga för att ge varje resulterande <code class=\"docutils literal notranslate\">Blog</code>-objekt ett <code class=\"docutils literal notranslate\">entry_count</code>-attribut, ett heltalsantal av associerade <code class=\"docutils literal notranslate\">Entry</code>-objekt:</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>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>extra<span class=\"p\">(</span>\n    select<span class=\"o\">=</span><span class=\"p\">{</span>\n        <span class=\"s2\">&quot;entry_count&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;SELECT COUNT(*) FROM blog_entry WHERE blog_entry.blog_id = blog_blog.id&quot;</span>\n    <span class=\"p\">},</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p>I detta speciella fall utnyttjar vi det faktum att frågan redan kommer att innehålla tabellen <code class=\"docutils literal notranslate\">blog_blog</code> i sin <code class=\"docutils literal notranslate\">FROM</code>-klausul.</p>\n<p>Den resulterande SQL i ovanstående exempel skulle vara:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> blog_blog<span class=\"p\">.</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"p\">(</span><span class=\"k\">SELECT</span> <span class=\"k\">COUNT</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">)</span> <span class=\"k\">FROM</span> blog_entry <span class=\"k\">WHERE</span> blog_entry<span class=\"p\">.</span>blog_id <span class=\"o\">=</span> blog_blog<span class=\"p\">.</span>id<span class=\"p\">)</span> <span class=\"k\">AS</span> entry_count\n<span class=\"k\">FROM</span> blog_blog<span class=\"p\">;</span>\n</code></pre></div>\n<p>Observera att de parenteser som krävs av de flesta databasmotorer runt underfrågor inte krävs i Djangos <code class=\"docutils literal notranslate\">select</code>-klausuler.</p>\n<p>I vissa sällsynta fall kan du vilja skicka parametrar till SQL-fragmenten i <code class=\"docutils literal notranslate\">extra(select=...)</code>. För detta ändamål använder du parametern <code class=\"docutils literal notranslate\">select_params</code>.</p>\n<p>Detta kommer att fungera, till exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>extra<span class=\"p\">(</span>\n    select<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;a&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;</span><span class=\"si\">%s</span><span class=\"s2\">&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;b&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;</span><span class=\"si\">%s</span><span class=\"s2\">&quot;</span><span class=\"p\">},</span>\n    select_params<span class=\"o\">=</span><span class=\"p\">(</span><span class=\"s2\">&quot;one&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;two&quot;</span><span class=\"p\">),</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p>Om du behöver använda en bokstavlig <code class=\"docutils literal notranslate\">%s</code> i din select-sträng använder du sekvensen <code class=\"docutils literal notranslate\">%%s</code>.</p>\n</li>\n<li><p><code class=\"docutils literal notranslate\">where</code> / <code class=\"docutils literal notranslate\">tables</code></p>\n<p>Du kan definiera explicita SQL <code class=\"docutils literal notranslate\">WHERE</code>-klausuler - kanske för att utföra icke-explicita sammanfogningar - genom att använda <code class=\"docutils literal notranslate\">where</code>. Du kan manuellt lägga till tabeller i SQL-satsen <code class=\"docutils literal notranslate\">FROM</code> med hjälp av <code class=\"docutils literal notranslate\">tables</code>.</p>\n<p><code class=\"docutils literal notranslate\">where</code> och <code class=\"docutils literal notranslate\">tables</code> tar båda emot en lista med strängar. Alla <code class=\"docutils literal notranslate\">where</code> parametrar är ”AND”ed till alla andra sökkriterier.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>extra<span class=\"p\">(</span>where<span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;foo=&#39;a&#39; OR bar = &#39;a&#39;&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;baz = &#39;a&#39;&quot;</span><span class=\"p\">])</span>\n</code></pre></div>\n<p>…översätts (ungefär) till följande SQL:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"o\">*</span> <span class=\"k\">FROM</span> blog_entry <span class=\"k\">WHERE</span> <span class=\"p\">(</span>foo<span class=\"o\">=</span><span class=\"s1\">&#39;a&#39;</span> <span class=\"k\">OR</span> bar<span class=\"o\">=</span><span class=\"s1\">&#39;a&#39;</span><span class=\"p\">)</span> <span class=\"k\">AND</span> <span class=\"p\">(</span>baz<span class=\"o\">=</span><span class=\"s1\">&#39;a&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Var försiktig när du använder parametern <code class=\"docutils literal notranslate\">tables</code> om du anger tabeller som redan används i frågan. När du lägger till extra tabeller via parametern <code class=\"docutils literal notranslate\">tables</code> antar Django att du vill att den tabellen ska inkluderas en extra gång, om den redan är inkluderad. Det skapar ett problem, eftersom tabellnamnet då får ett alias. Om en tabell förekommer flera gånger i en SQL-sats måste den andra och efterföljande förekomsterna använda alias så att databasen kan skilja dem åt. Om du hänvisar till den extra tabellen som du lade till i den extra <code class=\"docutils literal notranslate\">where</code>-parametern kommer detta att orsaka fel.</p>\n<p>Normalt lägger du bara till extra tabeller som inte redan finns i frågan. Men om det fall som beskrivs ovan inträffar finns det några lösningar. Först kan du se om du kan klara dig utan att inkludera den extra tabellen och använda den som redan finns i frågan. Om det inte är möjligt, placera ditt <code class=\"docutils literal notranslate\">extra()</code>-anrop längst fram i queryset-konstruktionen så att din tabell är den första användningen av den tabellen. Slutligen, om allt annat misslyckas, titta på den query som producerats och skriv om ditt <code class=\"docutils literal notranslate\">where</code>-tillägg för att använda det alias som ges till din extra tabell. Aliaset kommer att vara detsamma varje gång du konstruerar queryset på samma sätt, så du kan lita på att aliasnamnet inte ändras.</p>\n</li>\n<li><p><code class=\"docutils literal notranslate\">order_by</code></p>\n<p>Om du behöver sortera den resulterande frågeuppsättningen med några av de nya fälten eller tabellerna som du har inkluderat via <code class=\"docutils literal notranslate\">extra()</code>, använd parametern <code class=\"docutils literal notranslate\">order_by</code> för <code class=\"docutils literal notranslate\">extra()</code> och skicka in en följd av strängar. Strängarna ska antingen vara modellfält (som i den vanliga <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.order_by\" title=\"django.db.models.query.QuerySet.order_by\"><code class=\"xref py py-meth docutils literal notranslate\">order_by()</code></a>-metoden för frågeuppsättningar), ha formen <code class=\"docutils literal notranslate\">table_name.column_name</code> eller vara ett alias för en kolumn som du angav i <code class=\"docutils literal notranslate\">select</code>-parametern till <code class=\"docutils literal notranslate\">extra()</code>.</p>\n<p>Till exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>q <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>extra<span class=\"p\">(</span>select<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;is_recent&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;pub_date &gt; &#39;2006-01-01&#39;&quot;</span><span class=\"p\">})</span>\nq <span class=\"o\">=</span> q<span class=\"o\">.</span>extra<span class=\"p\">(</span>order_by<span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;-is_recent&quot;</span><span class=\"p\">])</span>\n</code></pre></div>\n<p>Detta skulle sortera alla objekt för vilka <code class=\"docutils literal notranslate\">is_recent</code> är sant längst fram i resultatuppsättningen (<code class=\"docutils literal notranslate\">True</code> sorteras före <code class=\"docutils literal notranslate\">False</code> i en fallande ordning).</p>\n<p>Detta visar förresten att du kan göra flera anrop till <code class=\"docutils literal notranslate\">extra()</code> och att det kommer att bete sig som du förväntar dig (lägga till nya begränsningar varje gång).</p>\n</li>\n<li><p><code class=\"docutils literal notranslate\">params</code></p>\n<p>Parametern <code class=\"docutils literal notranslate\">where</code> som beskrivs ovan kan använda Pythons standardplatshållare för databassträngar - <code class=\"docutils literal notranslate\">'%s'</code> för att ange parametrar som databasmotorn automatiskt ska citera. Argumentet <code class=\"docutils literal notranslate\">params</code> är en lista över eventuella extra parametrar som ska ersättas.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>extra<span class=\"p\">(</span>where<span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;headline=</span><span class=\"si\">%s</span><span class=\"s2\">&quot;</span><span class=\"p\">],</span> params<span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;Lennon&quot;</span><span class=\"p\">])</span>\n</code></pre></div>\n<p>Använd alltid <code class=\"docutils literal notranslate\">params</code> istället för att bädda in värden direkt i <code class=\"docutils literal notranslate\">where</code> eftersom <code class=\"docutils literal notranslate\">params</code> ser till att värdena citeras korrekt enligt din specifika backend. Till exempel: kommer citattecken att escapas korrekt.</p>\n<p>Dålig:</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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>extra<span class=\"p\">(</span>where<span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;headline=&#39;Lennon&#39;&quot;</span><span class=\"p\">])</span>\n</code></pre></div>\n<p>Bra:</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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>extra<span class=\"p\">(</span>where<span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;headline=</span><span class=\"si\">%s</span><span class=\"s2\">&quot;</span><span class=\"p\">],</span> params<span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;Lennon&quot;</span><span class=\"p\">])</span>\n</code></pre></div>\n</li>\n</ul>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>Om du utför frågor på MySQL, observera att MySQL: s tysta typcoercion kan orsaka oväntade resultat när du blandar typer. Om du ställer en fråga på en kolumn av strängtyp, men med ett heltalsvärde, kommer MySQL att tvinga typerna för alla värden i tabellen till ett heltal innan jämförelsen utförs. Om din tabell till exempel innehåller värdena <code class=\"docutils literal notranslate\">'abc'</code>, <code class=\"docutils literal notranslate\">'def'</code> och du frågar efter <code class=\"docutils literal notranslate\">WHERE mycolumn=0</code>, kommer båda raderna att matcha. För att förhindra detta måste du utföra korrekt typecasting innan du använder värdet i en fråga.</p>\n</aside>\n</section>\n<section id=\"defer\">\n<h4><code class=\"docutils literal notranslate\">defer()</code><a class=\"heading-anchor\" href=\"#defer\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.defer\">\n<span class=\"sig-name descname\">defer</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>fields</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.defer\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>I vissa komplexa datamodelleringssituationer kan dina modeller innehålla många fält, varav vissa kan innehålla mycket data (till exempel textfält) eller kräva dyr bearbetning för att konvertera dem till Python-objekt. Om du använder resultaten av en queryset i en situation där du inte vet om du behöver just de här fälten när du först hämtar data, kan du säga till Django att inte hämta dem från databasen.</p>\n<p>Detta görs genom att skicka namnen på de fält som inte ska laddas till <code class=\"docutils literal notranslate\">defer()</code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>defer<span class=\"p\">(</span><span class=\"s2\">&quot;headline&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;body&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>En queryset som har uppskjutna fält kommer fortfarande att returnera modellinstanser. Varje uppskjutet fält hämtas från databasen om du öppnar det fältet (ett i taget, inte alla uppskjutna fält på en gång).</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Uppskjutna fält kommer inte att lazy-loadas på det här sättet från asynkron kod. Istället kommer du att få ett <code class=\"docutils literal notranslate\">SynchronousOnlyOperation</code> undantag. Om du skriver asynkron kod bör du inte försöka komma åt några fält som du <code class=\"docutils literal notranslate\">defer()</code>.</p>\n</aside>\n<p>Du kan göra flera anrop till <code class=\"docutils literal notranslate\">defer()</code>. Varje anrop lägger till nya fält i den uppskjutna uppsättningen:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># Defers both the body and headline fields.</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>defer<span class=\"p\">(</span><span class=\"s2\">&quot;body&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>filter<span class=\"p\">(</span>rating<span class=\"o\">=</span><span class=\"mi\">5</span><span class=\"p\">)</span><span class=\"o\">.</span>defer<span class=\"p\">(</span><span class=\"s2\">&quot;headline&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Ordningen i vilken fälten läggs till i den uppskjutna uppsättningen spelar ingen roll. Att anropa <code class=\"docutils literal notranslate\">defer()</code> med ett fältnamn som redan har skjutits upp är ofarligt (fältet kommer fortfarande att skjutas upp).</p>\n<p>Du kan skjuta upp inläsningen av fält i relaterade modeller (om de relaterade modellerna läses in via <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.select_related\" title=\"django.db.models.query.QuerySet.select_related\"><code class=\"xref py py-meth docutils literal notranslate\">select_related()</code></a>) med den vanliga dubbla understrecknotationen för att separera relaterade fält:</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>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>select_related<span class=\"p\">()</span><span class=\"o\">.</span>defer<span class=\"p\">(</span><span class=\"s2\">&quot;entry__headline&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;entry__body&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Om du vill rensa uppsättningen av uppskjutna fält, skicka <code class=\"docutils literal notranslate\">None</code> som en parameter till <code class=\"docutils literal notranslate\">defer()</code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># Load all fields immediately.</span>\nmy_queryset<span class=\"o\">.</span>defer<span class=\"p\">(</span><span class=\"kc\">None</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Vissa fält i en modell skjuts inte upp även om du begär det. Du kan aldrig skjuta upp inläsningen av primärnyckeln. Om du använder <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.select_related\" title=\"django.db.models.query.QuerySet.select_related\"><code class=\"xref py py-meth docutils literal notranslate\">select_related()</code></a> för att hämta relaterade modeller bör du inte skjuta upp inläsningen av fältet som ansluter den primära modellen till den relaterade, eftersom det leder till ett fel.</p>\n<p>På samma sätt är det inte meningsfullt att anropa <code class=\"docutils literal notranslate\">defer()</code> (eller motsvarigheten <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.only\" title=\"django.db.models.query.QuerySet.only\"><code class=\"xref py py-meth docutils literal notranslate\">only()</code></a>) med ett argument från en aggregering (t.ex. med resultatet av <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.annotate\" title=\"django.db.models.query.QuerySet.annotate\"><code class=\"xref py py-meth docutils literal notranslate\">annotate()</code></a>): om du gör det utlöses ett undantag. De aggregerade värdena hämtas alltid till den resulterande frågeuppsättningen.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Metoden <code class=\"docutils literal notranslate\">defer()</code> (och dess motsvarighet <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.only\" title=\"django.db.models.query.QuerySet.only\"><code class=\"xref py py-meth docutils literal notranslate\">only()</code></a> nedan) är bara avsedd för avancerade användningsfall. De erbjuder en optimering när du har analyserat dina frågor noggrant, förstår <em>exakt</em> vilken information du behöver och har mätt att skillnaden mellan att returnera fälten du behöver och modellens fullständiga uppsättning fält är betydande.</p>\n<p>Även om du anser att du befinner dig i den avancerade användningssituationen, använd <strong>endast</strong> <code class=\"docutils literal notranslate\">defer()</code> <strong>när du inte vid inläsning av frågeuppsättningen kan avgöra om du behöver extrafälten eller inte</strong>. Om du ofta läser in och använder en viss delmängd av dina data är det bästa valet att normalisera modellerna och lägga data som inte läses in i en separat modell (och databastabell). Om kolumnerna av något skäl <em>måste</em> stanna i en och samma tabell ska du skapa en modell med <code class=\"docutils literal notranslate\">Meta.managed = False</code> (se dokumentationen för <a class=\"reference internal\" href=\"/sv/6.1/ref/models/options/#django.db.models.Options.managed\" title=\"django.db.models.Options.managed\"><code class=\"xref py py-attr docutils literal notranslate\">managed</code></a>) som bara innehåller fälten du normalt behöver läsa in och använda den där du annars skulle anropa <code class=\"docutils literal notranslate\">defer()</code>. Detta gör koden mer explicit för läsaren, går något snabbare och förbrukar något mindre minne i Python-processen.</p>\n<p>Till exempel: använder båda dessa modeller samma underliggande databastabell:</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\">CommonlyUsedModel</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    f1 <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">10</span><span class=\"p\">)</span>\n\n    <span class=\"k\">class</span> <span class=\"nc\">Meta</span><span class=\"p\">:</span>\n        managed <span class=\"o\">=</span> <span class=\"kc\">False</span>\n        db_table <span class=\"o\">=</span> <span class=\"s2\">&quot;app_largetable&quot;</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">ManagedModel</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    f1 <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">10</span><span class=\"p\">)</span>\n    f2 <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">10</span><span class=\"p\">)</span>\n\n    <span class=\"k\">class</span> <span class=\"nc\">Meta</span><span class=\"p\">:</span>\n        db_table <span class=\"o\">=</span> <span class=\"s2\">&quot;app_largetable&quot;</span>\n\n\n<span class=\"c1\"># Two equivalent QuerySets:</span>\nCommonlyUsedModel<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()</span>\nManagedModel<span class=\"o\">.</span>objects<span class=\"o\">.</span>defer<span class=\"p\">(</span><span class=\"s2\">&quot;f2&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Om många fält behöver dupliceras i den ohanterade modellen kan det vara bäst att skapa en abstrakt modell med de delade fälten och sedan låta den ohanterade och den hanterade modellen ärva från den abstrakta modellen.</p>\n</aside>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>När <a class=\"reference internal\" href=\"/sv/6.1/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a> anropas för instanser med uppskjutna fält sparas bara de inlästa fälten. Mer information finns i <a class=\"reference internal\" href=\"/sv/6.1/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a>.</p>\n</aside>\n</section>\n<section id=\"only\">\n<h4><code class=\"docutils literal notranslate\">only()</code><a class=\"heading-anchor\" href=\"#only\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.only\">\n<span class=\"sig-name descname\">only</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>fields</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.only\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Metoden <code class=\"docutils literal notranslate\">only()</code> är i princip motsatsen till <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.defer\" title=\"django.db.models.query.QuerySet.defer\"><code class=\"xref py py-meth docutils literal notranslate\">defer()</code></a>. Endast de fält som skickas till den här metoden och som <em>inte</em> redan har angetts som uppskjutna laddas omedelbart när frågeuppsättningen utvärderas.</p>\n<p>Om du har en modell där nästan alla fält måste skjutas upp kan du använda <code class=\"docutils literal notranslate\">only()</code> för att ange den kompletterande uppsättningen fält, vilket kan resultera i enklare kod.</p>\n<p>Anta att du har en modell med fälten <code class=\"docutils literal notranslate\">namn</code>, <code class=\"docutils literal notranslate\">ålder</code> och <code class=\"docutils literal notranslate\">biografi</code>. Följande två frågeuppsättningar är desamma när det gäller uppskjutna fält:</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>Person<span class=\"o\">.</span>objects<span class=\"o\">.</span>defer<span class=\"p\">(</span><span class=\"s2\">&quot;age&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;biography&quot;</span><span class=\"p\">)</span>\nPerson<span class=\"o\">.</span>objects<span class=\"o\">.</span>only<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>När du anropar <code class=\"docutils literal notranslate\">only()</code> <em>ersätter</em> den uppsättning fält som ska laddas omedelbart. Metodens namn är ett minnesmärke: <strong>endast</strong> dessa fält laddas omedelbart; resten skjuts upp. Successiva anrop till <code class=\"docutils literal notranslate\">only()</code> resulterar således i att endast de sista fälten beaktas:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># This will defer all fields except the headline.</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>only<span class=\"p\">(</span><span class=\"s2\">&quot;body&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;rating&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>only<span class=\"p\">(</span><span class=\"s2\">&quot;headline&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Eftersom <code class=\"docutils literal notranslate\">defer()</code> agerar stegvis (lägger till fält i den uppskjutna listan) kan du kombinera anrop till <code class=\"docutils literal notranslate\">only()</code> och <code class=\"docutils literal notranslate\">defer()</code> och saker och ting kommer att bete sig logiskt:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># Final result is that everything except &quot;headline&quot; is deferred.</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>only<span class=\"p\">(</span><span class=\"s2\">&quot;headline&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;body&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>defer<span class=\"p\">(</span><span class=\"s2\">&quot;body&quot;</span><span class=\"p\">)</span>\n\n<span class=\"c1\"># Final result loads headline immediately.</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>defer<span class=\"p\">(</span><span class=\"s2\">&quot;body&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>only<span class=\"p\">(</span><span class=\"s2\">&quot;headline&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;body&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Alla varningar i anmärkningen för <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.defer\" title=\"django.db.models.query.QuerySet.defer\"><code class=\"xref py py-meth docutils literal notranslate\">defer()</code></a>-dokumentationen gäller även för <code class=\"docutils literal notranslate\">only()</code>. Använd den försiktigt och endast efter att ha uttömt dina andra alternativ.</p>\n<p>Att använda <code class=\"docutils literal notranslate\">only()</code> och utelämna ett fält som begärts med <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.select_related\" title=\"django.db.models.query.QuerySet.select_related\"><code class=\"xref py py-meth docutils literal notranslate\">select_related()</code></a> är också ett fel. Å andra sidan kommer anrop av <code class=\"docutils literal notranslate\">only()</code> utan några argument att returnera alla fält (inklusive annoteringar) som hämtats av queryset.</p>\n<p>Precis som med <code class=\"docutils literal notranslate\">defer()</code> kan du inte komma åt de icke-laddade fälten från asynkron kod och förvänta dig att de laddas. Istället kommer du att få ett <code class=\"docutils literal notranslate\">SynchronousOnlyOperation</code> undantag. Se till att alla fält som du kan komma åt finns i ditt <code class=\"docutils literal notranslate\">only()</code>-anrop.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>När <a class=\"reference internal\" href=\"/sv/6.1/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a> anropas för instanser med uppskjutna fält sparas bara de inlästa fälten. Mer information finns i <a class=\"reference internal\" href=\"/sv/6.1/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a>.</p>\n</aside>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>När du använder <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.defer\" title=\"django.db.models.query.QuerySet.defer\"><code class=\"xref py py-meth docutils literal notranslate\">defer()</code></a> efter <code class=\"docutils literal notranslate\">only()</code> kommer fälten i <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.defer\" title=\"django.db.models.query.QuerySet.defer\"><code class=\"xref py py-meth docutils literal notranslate\">defer()</code></a> att åsidosätta <code class=\"docutils literal notranslate\">only()</code> för fält som listas i båda.</p>\n</aside>\n</section>\n<section id=\"using\">\n<h4><code class=\"docutils literal notranslate\">using()</code><a class=\"heading-anchor\" href=\"#using\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.using\">\n<span class=\"sig-name descname\">using</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">alias</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.using\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Den här metoden används för att styra mot vilken databas <code class=\"docutils literal notranslate\">QuerySet</code> ska utvärderas om du använder fler än en databas. Det enda argument som metoden tar är aliaset för en databas, enligt definitionen i <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-DATABASES\"><code class=\"xref std std-setting docutils literal notranslate\">DATABASES</code></a>.</p>\n<p>Till 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=\"go\"># queries the database with the &#39;default&#39; alias.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()</span>\n\n<span class=\"go\"># queries the database with the &#39;backup&#39; alias</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>using<span class=\"p\">(</span><span class=\"s2\">&quot;backup&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"select-for-update\">\n<h4><code class=\"docutils literal notranslate\">select_for_update()</code><a class=\"heading-anchor\" href=\"#select-for-update\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.select_for_update\">\n<span class=\"sig-name descname\">select_for_update</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">nowait<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">skip_locked<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">of<span class=\"o\">=</span><span class=\"default_value\">()</span></em>, <em class=\"sig-param\">no_key<span class=\"o\">=</span><span class=\"default_value\">False</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.select_for_update\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returnerar en queryset som låser rader till slutet av transaktionen, vilket genererar en SQL-sats <code class=\"docutils literal notranslate\">SELECT ... FOR UPDATE</code> på databaser som stöds.</p>\n<p>Till exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> transaction\n\nentries <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>select_for_update<span class=\"p\">()</span><span class=\"o\">.</span>filter<span class=\"p\">(</span>author<span class=\"o\">=</span>request<span class=\"o\">.</span>user<span class=\"p\">)</span>\n<span class=\"k\">with</span> transaction<span class=\"o\">.</span>atomic<span class=\"p\">():</span>\n    <span class=\"k\">for</span> entry <span class=\"ow\">in</span> entries<span class=\"p\">:</span>\n        <span class=\"o\">...</span>\n</code></pre></div>\n<p>När queryset utvärderas (i det här fallet <code class=\"docutils literal notranslate\">for entry in entries</code>) kommer alla matchade poster att låsas fram till slutet av transaktionsblocket, vilket innebär att andra transaktioner inte kan ändra eller förvärva lås på dem.</p>\n<p>Om en annan transaktion redan har skaffat ett lås på en av de valda raderna blockeras vanligtvis frågan tills låset frigörs. Om detta inte är det beteende du vill ha kan du anropa <code class=\"docutils literal notranslate\">select_for_update(nowait=True)</code>. Detta gör anropet icke-blockerande. Om ett motstridigt lås redan har förvärvats av en annan transaktion, kommer <a class=\"reference internal\" href=\"/sv/6.1/ref/exceptions/#django.db.DatabaseError\" title=\"django.db.DatabaseError\"><code class=\"xref py py-exc docutils literal notranslate\">DatabaseError</code></a> att tas upp när queryset utvärderas. Du kan också ignorera låsta rader genom att använda <code class=\"docutils literal notranslate\">select_for_update(skip_locked=True)</code> istället. Alternativen <code class=\"docutils literal notranslate\">nowait</code> och <code class=\"docutils literal notranslate\">skip_locked</code> är ömsesidigt uteslutande och försök att anropa <code class=\"docutils literal notranslate\">select_for_update()</code> med båda alternativen aktiverade kommer att resultera i ett <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#ValueError\" title=\"(in Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\">ValueError</code></a>.</p>\n<p>Som standard låser <code class=\"docutils literal notranslate\">select_for_update()</code> alla rader som väljs av frågan. Till exempel: låses rader med relaterade objekt som anges i <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.select_related\" title=\"django.db.models.query.QuerySet.select_related\"><code class=\"xref py py-meth docutils literal notranslate\">select_related()</code></a> utöver raderna i frågeuppsättningens modell. Om detta inte är önskvärt kan du ange de relaterade objekt som du vill låsa i <code class=\"docutils literal notranslate\">select_for_update(of=(...))</code> med samma fältsyntax som i <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.select_related\" title=\"django.db.models.query.QuerySet.select_related\"><code class=\"xref py py-meth docutils literal notranslate\">select_related()</code></a>. Använd värdet <code class=\"docutils literal notranslate\">'self'</code> för att hänvisa till frågeuppsättningens modell.</p>\n<aside class=\"admonition-lock-parents-models-in-select-for-update-of admonition\" role=\"note\">\n<p class=\"admonition-title\">Låsa föräldramodeller i <code class=\"docutils literal notranslate\">select_for_update(of=(...))</code></p>\n<p>Om du vill låsa föräldramodeller när du använder <a class=\"reference internal\" href=\"/sv/6.1/topics/db/models/#multi-table-inheritance\"><span class=\"std std-ref\">multi-table inheritance</span></a>, måste du ange föräldralänkfält (som standard <code class=\"docutils literal notranslate\">&lt;parent_model_name&gt;_ptr</code>) i argumentet <code class=\"docutils literal notranslate\">of</code>. Till exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Restaurant<span class=\"o\">.</span>objects<span class=\"o\">.</span>select_for_update<span class=\"p\">(</span>of<span class=\"o\">=</span><span class=\"p\">(</span><span class=\"s2\">&quot;self&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;place_ptr&quot;</span><span class=\"p\">))</span>\n</code></pre></div>\n</aside>\n<aside class=\"admonition-using-select-for-update-of-with-specified-fields admonition\" role=\"note\">\n<p class=\"admonition-title\">Använda <code class=\"docutils literal notranslate\">select_for_update(of=(...))</code> med angivna fält</p>\n<p>Om du vill låsa modeller och ange valda fält, t.ex. med hjälp av <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.values\" title=\"django.db.models.query.QuerySet.values\"><code class=\"xref py py-meth docutils literal notranslate\">values()</code></a>, måste du välja minst ett fält från varje modell i argumentet <code class=\"docutils literal notranslate\">of</code>. Modeller utan valda fält kommer inte att låsas.</p>\n</aside>\n<p>Endast på PostgreSQL kan du skicka `` no_key = True `` för att få ett svagare lås, som fortfarande tillåter att skapa rader som bara refererar till låsta rader (till exempel genom en främmande nyckel) medan låset är på plats. PostgreSQL-dokumentationen har mer information om låslägen på radnivå &lt;<a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/explicit-locking.html#LOCKING-ROWS\">https://www.postgresql.org/docs/current/explicit-locking.html#LOCKING-ROWS</a>&gt;`_.</p>\n<p>Du kan inte använda <code class=\"docutils literal notranslate\">select_for_update()</code> på nullable-relationer:</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>Person<span class=\"o\">.</span>objects<span class=\"o\">.</span>select_related<span class=\"p\">(</span><span class=\"s2\">&quot;hometown&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>select_for_update<span class=\"p\">()</span>\n<span class=\"gt\">Traceback (most recent call last):</span>\n<span class=\"c\">...</span>\n<span class=\"gr\">django.db.utils.NotSupportedError</span>: FOR UPDATE cannot be applied to the nullable side of an outer join\n</code></pre></div>\n<p>För att undvika den begränsningen kan du utesluta null-objekt om du inte bryr dig om dem:</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>Person<span class=\"o\">.</span>objects<span class=\"o\">.</span>select_related<span class=\"p\">(</span><span class=\"s2\">&quot;hometown&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>select_for_update<span class=\"p\">()</span><span class=\"o\">.</span>exclude<span class=\"p\">(</span>hometown<span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [&lt;Person: ...&gt;, ...]&gt;</span>\n</code></pre></div>\n<p>Databasbackendarna <code class=\"docutils literal notranslate\">postgresql</code>, <code class=\"docutils literal notranslate\">oracle</code> och <code class=\"docutils literal notranslate\">mysql</code> stöder <code class=\"docutils literal notranslate\">select_for_update()</code>. MariaDB stöder dock endast argumenten <code class=\"docutils literal notranslate\">nowait</code> och <code class=\"docutils literal notranslate\">skip_locked</code>, och MySQL stöder argumenten <code class=\"docutils literal notranslate\">nowait</code>, <code class=\"docutils literal notranslate\">skip_locked</code> och <code class=\"docutils literal notranslate\">of</code>. Argumentet <code class=\"docutils literal notranslate\">no_key</code> stöds endast av PostgreSQL.</p>\n<p>Att skicka <code class=\"docutils literal notranslate\">nowait=True</code>, <code class=\"docutils literal notranslate\">skip_locked=True</code>, <code class=\"docutils literal notranslate\">no_key=True</code> eller <code class=\"docutils literal notranslate\">of</code> till <code class=\"docutils literal notranslate\">select_for_update()</code> med databasbackends som inte stöder dessa alternativ, till exempel MySQL, ger upphov till ett <a class=\"reference internal\" href=\"/sv/6.1/ref/exceptions/#django.db.NotSupportedError\" title=\"django.db.NotSupportedError\"><code class=\"xref py py-exc docutils literal notranslate\">NotSupportedError</code></a>. Detta förhindrar att koden oväntat blockeras.</p>\n<p>Att utvärdera en queryset med <code class=\"docutils literal notranslate\">select_for_update()</code> i autocommit-läge på backends som stöder <code class=\"docutils literal notranslate\">SELECT ... FOR UPDATE</code> är ett <a class=\"reference internal\" href=\"/sv/6.1/ref/exceptions/#django.db.transaction.TransactionManagementError\" title=\"django.db.transaction.TransactionManagementError\"><code class=\"xref py py-exc docutils literal notranslate\">TransactionManagementError</code></a>-fel eftersom raderna inte är låsta i det fallet. Om det var tillåtet skulle detta underlätta datakorruption och kan lätt orsakas av anropande kod som förväntar sig att köras i en transaktion utanför en transaktion.</p>\n<p>Att använda <code class=\"docutils literal notranslate\">select_for_update()</code> på backends som inte stöder <code class=\"docutils literal notranslate\">SELECT ... FOR UPDATE</code> (t.ex. SQLite) har ingen effekt. <code class=\"docutils literal notranslate\">SELECT ... FOR UPDATE</code> läggs inte till i frågan och ett fel uppstår inte om <code class=\"docutils literal notranslate\">select_for_update()</code> används i autocommit-läge.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>Även om <code class=\"docutils literal notranslate\">select_for_update()</code> normalt misslyckas i autocommit-läge omsluter <a class=\"reference internal\" href=\"/sv/6.1/topics/testing/tools/#django.test.TestCase\" title=\"django.test.TestCase\"><code class=\"xref py py-class docutils literal notranslate\">TestCase</code></a> automatiskt varje test i en transaktion. Därför passerar ett anrop till <code class=\"docutils literal notranslate\">select_for_update()</code> i en <code class=\"docutils literal notranslate\">TestCase</code>, även utanför ett <a class=\"reference internal\" href=\"/sv/6.1/topics/db/transactions/#django.db.transaction.atomic\" title=\"django.db.transaction.atomic\"><code class=\"xref py py-func docutils literal notranslate\">atomic()</code></a>-block, utan att utlösa ett <code class=\"docutils literal notranslate\">TransactionManagementError</code>. Detta kan vara oväntat. För att testa <code class=\"docutils literal notranslate\">select_for_update()</code> korrekt bör du använda <a class=\"reference internal\" href=\"/sv/6.1/topics/testing/tools/#django.test.TransactionTestCase\" title=\"django.test.TransactionTestCase\"><code class=\"xref py py-class docutils literal notranslate\">TransactionTestCase</code></a>.</p>\n</aside>\n<aside class=\"admonition-certain-expressions-may-not-be-supported admonition\" role=\"note\">\n<p class=\"admonition-title\">Vissa uttryck kanske inte stöds</p>\n<p>PostgreSQL stöder inte <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>select_for_update() `` med <a class=\"reference internal\" href=\"/sv/6.1/ref/models/expressions/#django.db.models.expressions.Window\" title=\"django.db.models.expressions.Window\"><code class=\"xref py py-class docutils literal notranslate\">Window</code></a>-uttryck.</p>\n</aside>\n</section>\n<section id=\"raw\">\n<h4><code class=\"docutils literal notranslate\">raw()</code><a class=\"heading-anchor\" href=\"#raw\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.raw\">\n<span class=\"sig-name descname\">raw</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">raw_query</em>, <em class=\"sig-param\">params<span class=\"o\">=</span><span class=\"default_value\">()</span></em>, <em class=\"sig-param\">translations<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">using<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.raw\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Tar en rå SQL-fråga, kör den och returnerar en <code class=\"docutils literal notranslate\">django.db.models.query.RawQuerySet</code>-instans. Denna <code class=\"docutils literal notranslate\">RawQuerySet</code>-instans kan itereras över precis som en vanlig <code class=\"docutils literal notranslate\">QuerySet</code> för att tillhandahålla objektinstanser.</p>\n<p>Se <a class=\"reference internal\" href=\"/sv/6.1/topics/db/sql/\"><span class=\"doc\">Utföra SQL-frågor i råformat</span></a> för mer information.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p><code class=\"docutils literal notranslate\">raw()</code> utlöser alltid en ny fråga och tar inte hänsyn till tidigare filtrering. Därför bör den i allmänhet anropas från <code class=\"docutils literal notranslate\">Manager</code> eller från en ny <code class=\"docutils literal notranslate\">QuerySet</code>-instans.</p>\n</aside>\n</section>\n</section>\n<section id=\"operators-that-return-new-querysets\">\n<h3>Operatorer som returnerar nya <code class=\"docutils literal notranslate\">QuerySet</code><a class=\"heading-anchor\" href=\"#operators-that-return-new-querysets\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Kombinerade querysets måste använda samma modell.</p>\n<section id=\"and\">\n<h4>AND (<code class=\"docutils literal notranslate\">&amp;</code>)<a class=\"heading-anchor\" href=\"#and\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Kombinerar två <code class=\"docutils literal notranslate\">QuerySet</code> med SQL-operatorn <code class=\"docutils literal notranslate\">AND</code> på ett sätt som liknar kedjning av filter.</p>\n<p>Följande är likvärdiga:</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>Model<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span> <span class=\"o\">&amp;</span> Model<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>y<span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\nModel<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span><span class=\"o\">.</span>filter<span class=\"p\">(</span>y<span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>SQL-ekvivalent:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> x<span class=\"o\">=</span><span class=\"mi\">1</span> <span class=\"k\">AND</span> y<span class=\"o\">=</span><span class=\"mi\">2</span>\n</code></pre></div>\n</section>\n<section id=\"or\">\n<h4>ELLER (<code class=\"docutils literal notranslate\">|</code>)<a class=\"heading-anchor\" href=\"#or\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Kombinerar två <code class=\"docutils literal notranslate\">QuerySet</code> med hjälp av SQL-operatorn <code class=\"docutils literal notranslate\">OR</code>.</p>\n<p>Följande är likvärdiga:</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>Model<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span> <span class=\"o\">|</span> Model<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>y<span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> Q\n\nModel<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>Q<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span> <span class=\"o\">|</span> Q<span class=\"p\">(</span>y<span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>SQL-ekvivalent:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> x<span class=\"o\">=</span><span class=\"mi\">1</span> <span class=\"k\">OR</span> y<span class=\"o\">=</span><span class=\"mi\">2</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">|</code> är inte en kommutativ operation, eftersom olika (men likvärdiga) frågor kan genereras.</p>\n</section>\n<section id=\"xor\">\n<h4>XOR (<code class=\"docutils literal notranslate\">^</code>)<a class=\"heading-anchor\" href=\"#xor\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Kombinerar två <code class=\"docutils literal notranslate\">QuerySet</code> med hjälp av SQL-operatorn <code class=\"docutils literal notranslate\">XOR</code>. Ett <code class=\"docutils literal notranslate\">XOR</code>-uttryck matchar rader som matchas av ett udda antal operander.</p>\n<p>Följande är likvärdiga:</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>Model<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span> <span class=\"o\">^</span> Model<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>y<span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> Q\n\nModel<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>Q<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span> <span class=\"o\">^</span> Q<span class=\"p\">(</span>y<span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>SQL-ekvivalent:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> x<span class=\"o\">=</span><span class=\"mi\">1</span> XOR y<span class=\"o\">=</span><span class=\"mi\">2</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p><code class=\"docutils literal notranslate\">XOR</code> har inbyggt stöd i MariaDB och MySQL. På andra databaser konverteras <code class=\"docutils literal notranslate\">x ^ y ^ ... ^ z</code> konverteras till en motsvarighet:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"p\">(</span>x <span class=\"k\">OR</span> y <span class=\"k\">OR</span> <span class=\"p\">...</span> <span class=\"k\">OR</span> z<span class=\"p\">)</span> <span class=\"k\">AND</span>\n<span class=\"mi\">1</span><span class=\"o\">=</span><span class=\"k\">MOD</span><span class=\"p\">(</span>\n    <span class=\"p\">(</span><span class=\"k\">CASE</span> <span class=\"k\">WHEN</span> x <span class=\"k\">THEN</span> <span class=\"mi\">1</span> <span class=\"k\">ELSE</span> <span class=\"mi\">0</span> <span class=\"k\">END</span><span class=\"p\">)</span> <span class=\"o\">+</span>\n    <span class=\"p\">(</span><span class=\"k\">CASE</span> <span class=\"k\">WHEN</span> y <span class=\"k\">THEN</span> <span class=\"mi\">1</span> <span class=\"k\">ELSE</span> <span class=\"mi\">0</span> <span class=\"k\">END</span><span class=\"p\">)</span> <span class=\"o\">+</span>\n    <span class=\"p\">...</span>\n    <span class=\"p\">(</span><span class=\"k\">CASE</span> <span class=\"k\">WHEN</span> z <span class=\"k\">THEN</span> <span class=\"mi\">1</span> <span class=\"k\">ELSE</span> <span class=\"mi\">0</span> <span class=\"k\">END</span><span class=\"p\">),</span>\n    <span class=\"mi\">2</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n</aside>\n</section>\n</section>\n<section id=\"methods-that-do-not-return-querysets\">\n<h3>Metoder som inte returnerar <code class=\"docutils literal notranslate\">QuerySet</code><a class=\"heading-anchor\" href=\"#methods-that-do-not-return-querysets\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Följande <code class=\"docutils literal notranslate\">QuerySet</code>-metoder utvärderar <code class=\"docutils literal notranslate\">QuerySet</code> och returnerar något <em>annat</em> än ett <code class=\"docutils literal notranslate\">QuerySet</code>.</p>\n<p>Dessa metoder använder inte en cache (se <a class=\"reference internal\" href=\"/sv/6.1/topics/db/queries/#caching-and-querysets\"><span class=\"std std-ref\">Cachelagring och ”QuerySet</span></a>). Istället frågar de databasen varje gång de anropas.</p>\n<p>Eftersom dessa metoder utvärderar QuerySet är de blockerande anrop, och därför kan deras huvudsakliga (synkrona) versioner inte anropas från asynkron kod. Av denna anledning har var och en en motsvarande asynkron version med prefixet <code class=\"docutils literal notranslate\">a</code> - till exempel, i stället för <code class=\"docutils literal notranslate\">get(...)</code> kan du <code class=\"docutils literal notranslate\">await aget(...)</code>.</p>\n<p>Det finns vanligtvis ingen skillnad i beteende bortsett från deras asynkrona natur, men eventuella skillnader noteras nedan bredvid varje metod.</p>\n<section id=\"get\">\n<h4><code class=\"docutils literal notranslate\">get()</code><a class=\"heading-anchor\" href=\"#get\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.get\">\n<span class=\"sig-name descname\">get</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>args</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.get\"><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.query.QuerySet.aget\">\n<span class=\"sig-name descname\">aget</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>args</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.aget\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">aget()</code></p>\n<p>Returnerar objektet som matchar de angivna parametrarna för lookup, som bör vara i det format som beskrivs i <a class=\"reference internal\" href=\"#id4\">Field lookups</a>. Du bör använda uppslagningar som garanterat är unika, t.ex. primärnyckeln eller fält i en unik begränsning. Till exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>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\">1</span><span class=\"p\">)</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>Q<span class=\"p\">(</span>blog<span class=\"o\">=</span>blog<span class=\"p\">)</span> <span class=\"o\">&amp;</span> Q<span class=\"p\">(</span>entry_number<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>Om du förväntar dig att en queryset redan ska returnera en rad kan du använda <code class=\"docutils literal notranslate\">get()</code> utan några argument för att returnera objektet för den 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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pk<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n</code></pre></div>\n<p>Om <code class=\"docutils literal notranslate\">get()</code> inte hittar något objekt, uppstår ett <a class=\"reference internal\" href=\"/sv/6.1/ref/models/class/#django.db.models.Model.DoesNotExist\" title=\"django.db.models.Model.DoesNotExist\"><code class=\"xref py py-exc docutils literal notranslate\">Model.DoesNotExist</code></a> undantag:</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>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\">999</span><span class=\"p\">)</span>  <span class=\"c1\"># raises Entry.DoesNotExist</span>\n</code></pre></div>\n<p>Om <code class=\"docutils literal notranslate\">get()</code> hittar mer än ett objekt, ger det upphov till ett <a class=\"reference internal\" href=\"/sv/6.1/ref/models/class/#django.db.models.Model.MultipleObjectsReturned\" title=\"django.db.models.Model.MultipleObjectsReturned\"><code class=\"xref py py-exc docutils literal notranslate\">Model.MultipleObjectsReturned</code></a> undantag:</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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;A Duplicated Name&quot;</span><span class=\"p\">)</span>  <span class=\"c1\"># raises Entry.MultipleObjectsReturned</span>\n</code></pre></div>\n<p>Båda dessa undantagsklasser är attribut till modellklassen och är specifika för den modellen. Om du vill hantera sådana undantag från flera <code class=\"docutils literal notranslate\">get()</code>-anrop för olika modeller kan du använda deras generiska basklasser. Du kan t.ex. använda <a class=\"reference internal\" href=\"/sv/6.1/ref/exceptions/#django.core.exceptions.ObjectDoesNotExist\" title=\"django.core.exceptions.ObjectDoesNotExist\"><code class=\"xref py py-exc docutils literal notranslate\">django.core.exceptions.ObjectDoesNotExist</code></a> för att hantera <a class=\"reference internal\" href=\"/sv/6.1/ref/models/class/#django.db.models.Model.DoesNotExist\" title=\"django.db.models.Model.DoesNotExist\"><code class=\"xref py py-exc docutils literal notranslate\">DoesNotExist</code></a> undantag från flera modeller:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.core.exceptions</span> <span class=\"kn\">import</span> ObjectDoesNotExist\n\n<span class=\"k\">try</span><span class=\"p\">:</span>\n    blog <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    entry <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>blog<span class=\"o\">=</span>blog<span class=\"p\">,</span> entry_number<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"k\">except</span> ObjectDoesNotExist<span class=\"p\">:</span>\n    <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"s2\">&quot;Either the blog or entry doesn&#39;t exist.&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"create\">\n<h4><code class=\"docutils literal notranslate\">create()</code><a class=\"heading-anchor\" href=\"#create\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.create\">\n<span class=\"sig-name descname\">create</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.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.query.QuerySet.acreate\">\n<span class=\"sig-name descname\">acreate</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.acreate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">acreate()</code></p>\n<p>En bekvämlighetsmetod för att skapa ett objekt och spara allt i ett enda steg. Alltså:</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>p <span class=\"o\">=</span> Person<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>first_name<span class=\"o\">=</span><span class=\"s2\">&quot;Bruce&quot;</span><span class=\"p\">,</span> last_name<span class=\"o\">=</span><span class=\"s2\">&quot;Springsteen&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>och:</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>p <span class=\"o\">=</span> Person<span class=\"p\">(</span>first_name<span class=\"o\">=</span><span class=\"s2\">&quot;Bruce&quot;</span><span class=\"p\">,</span> last_name<span class=\"o\">=</span><span class=\"s2\">&quot;Springsteen&quot;</span><span class=\"p\">)</span>\np<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>är likvärdiga.</p>\n<p>Parametern <a class=\"reference internal\" href=\"/sv/6.1/ref/models/instances/#ref-models-force-insert\"><span class=\"std std-ref\">force_insert</span></a> finns dokumenterad på annat håll, men allt den innebär är att ett nytt objekt alltid kommer att skapas. Normalt behöver du inte oroa dig för detta. Men om din modell innehåller ett manuellt primärnyckelvärde som du ställer in och om det värdet redan finns i databasen, kommer ett anrop till <code class=\"docutils literal notranslate\">create()</code> att misslyckas med en <a class=\"reference internal\" href=\"/sv/6.1/ref/exceptions/#django.db.IntegrityError\" title=\"django.db.IntegrityError\"><code class=\"xref py py-exc docutils literal notranslate\">IntegrityError</code></a> eftersom primärnycklar måste vara unika. Var beredd på att hantera undantaget om du använder manuella primärnycklar.</p>\n</section>\n<section id=\"get-or-create\">\n<h4><code class=\"docutils literal notranslate\">get_or_create()</code><a class=\"heading-anchor\" href=\"#get-or-create\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.get_or_create\">\n<span class=\"sig-name descname\">get_or_create</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">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.query.QuerySet.get_or_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.query.QuerySet.aget_or_create\">\n<span class=\"sig-name descname\">aget_or_create</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">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.query.QuerySet.aget_or_create\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">aget_or_create()</code></p>\n<p>En bekväm metod för att leta upp ett objekt med de angivna <code class=\"docutils literal notranslate\">kwargs</code> (kan vara tomt om din modell har standardvärden för alla fält), och skapa ett om det behövs.</p>\n<p>Returnerar en tupel av <code class=\"docutils literal notranslate\">(object, created)</code>, där <code class=\"docutils literal notranslate\">object</code> är det hämtade eller skapade objektet och <code class=\"docutils literal notranslate\">created</code> är en boolean som anger om ett nytt objekt skapades.</p>\n<p>Detta är tänkt att förhindra att duplicerade objekt skapas när förfrågningar görs parallellt, och som en genväg till boilerplatish-kod. Till exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">try</span><span class=\"p\">:</span>\n    obj <span class=\"o\">=</span> Person<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>first_name<span class=\"o\">=</span><span class=\"s2\">&quot;John&quot;</span><span class=\"p\">,</span> last_name<span class=\"o\">=</span><span class=\"s2\">&quot;Lennon&quot;</span><span class=\"p\">)</span>\n<span class=\"k\">except</span> Person<span class=\"o\">.</span>DoesNotExist<span class=\"p\">:</span>\n    obj <span class=\"o\">=</span> Person<span class=\"p\">(</span>first_name<span class=\"o\">=</span><span class=\"s2\">&quot;John&quot;</span><span class=\"p\">,</span> last_name<span class=\"o\">=</span><span class=\"s2\">&quot;Lennon&quot;</span><span class=\"p\">,</span> birthday<span class=\"o\">=</span>date<span class=\"p\">(</span><span class=\"mi\">1940</span><span class=\"p\">,</span> <span class=\"mi\">10</span><span class=\"p\">,</span> <span class=\"mi\">9</span><span class=\"p\">))</span>\n    obj<span class=\"o\">.</span>save<span class=\"p\">()</span>\n</code></pre></div>\n<p>Här, med samtidiga förfrågningar, kan flera försök att spara en <code class=\"docutils literal notranslate\">Person</code> med samma parametrar göras. För att undvika detta race condition kan exemplet ovan skrivas om med hjälp av <code class=\"docutils literal notranslate\">get_or_create()</code> på följande sätt:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>obj<span class=\"p\">,</span> created <span class=\"o\">=</span> Person<span class=\"o\">.</span>objects<span class=\"o\">.</span>get_or_create<span class=\"p\">(</span>\n    first_name<span class=\"o\">=</span><span class=\"s2\">&quot;John&quot;</span><span class=\"p\">,</span>\n    last_name<span class=\"o\">=</span><span class=\"s2\">&quot;Lennon&quot;</span><span class=\"p\">,</span>\n    defaults<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;birthday&quot;</span><span class=\"p\">:</span> date<span class=\"p\">(</span><span class=\"mi\">1940</span><span class=\"p\">,</span> <span class=\"mi\">10</span><span class=\"p\">,</span> <span class=\"mi\">9</span><span class=\"p\">)},</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p>Alla nyckelordsargument som skickas till <code class=\"docutils literal notranslate\">get_or_create()</code> – <em>utom</em> ett valfritt argument som heter <code class=\"docutils literal notranslate\">defaults</code> – används i ett <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.get\" title=\"django.db.models.query.QuerySet.get\"><code class=\"xref py py-meth docutils literal notranslate\">get()</code></a>-anrop. Om ett objekt hittas returnerar <code class=\"docutils literal notranslate\">get_or_create()</code> en tuppel med objektet och <code class=\"docutils literal notranslate\">False</code>.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>Denna metod är atomisk och förutsätter att databasen tillämpar unikhet för nyckelordsargumenten (se <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.Field.unique\" title=\"django.db.models.Field.unique\"><code class=\"xref py py-attr docutils literal notranslate\">unique</code></a> eller <a class=\"reference internal\" href=\"/sv/6.1/ref/models/options/#django.db.models.Options.unique_together\" title=\"django.db.models.Options.unique_together\"><code class=\"xref py py-attr docutils literal notranslate\">unique_together</code></a>). Om fälten som används i nyckelordsargumenten inte har en unikhetsbegränsning kan samtidiga anrop till den här metoden resultera i att flera rader med samma parametrar infogas.</p>\n</aside>\n<p>Du kan ange mer komplexa villkor för det hämtade objektet genom att kedja <code class=\"docutils literal notranslate\">get_or_create()</code> med <code class=\"docutils literal notranslate\">filter()</code> och använda <a class=\"reference internal\" href=\"#q-objects\"><span class=\"std std-ref\">Q-objekt</span></a>. Till exempel för att hämta Robert eller Bob Marley om någon av dem finns, och annars skapa den senare:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> Q\n\nobj<span class=\"p\">,</span> created <span class=\"o\">=</span> Person<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>\n    Q<span class=\"p\">(</span>first_name<span class=\"o\">=</span><span class=\"s2\">&quot;Bob&quot;</span><span class=\"p\">)</span> <span class=\"o\">|</span> Q<span class=\"p\">(</span>first_name<span class=\"o\">=</span><span class=\"s2\">&quot;Robert&quot;</span><span class=\"p\">),</span>\n<span class=\"p\">)</span><span class=\"o\">.</span>get_or_create<span class=\"p\">(</span>last_name<span class=\"o\">=</span><span class=\"s2\">&quot;Marley&quot;</span><span class=\"p\">,</span> defaults<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Bob&quot;</span><span class=\"p\">})</span>\n</code></pre></div>\n<p>Om flera objekt hittas, ger <code class=\"docutils literal notranslate\">get_or_create()</code> upphov till <a class=\"reference internal\" href=\"/sv/6.1/ref/exceptions/#django.core.exceptions.MultipleObjectsReturned\" title=\"django.core.exceptions.MultipleObjectsReturned\"><code class=\"xref py py-exc docutils literal notranslate\">MultipleObjectsReturned</code></a>. Om ett objekt <em>inte</em> hittas kommer <code class=\"docutils literal notranslate\">get_or_create()</code> att instansiera och spara ett nytt objekt och returnera en tupel av det nya objektet och <code class=\"docutils literal notranslate\">True</code>. Det nya objektet kommer att skapas ungefär enligt denna algoritm:</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>params <span class=\"o\">=</span> <span class=\"p\">{</span>k<span class=\"p\">:</span> v <span class=\"k\">for</span> k<span class=\"p\">,</span> v <span class=\"ow\">in</span> kwargs<span class=\"o\">.</span>items<span class=\"p\">()</span> <span class=\"k\">if</span> <span class=\"s2\">&quot;__&quot;</span> <span class=\"ow\">not</span> <span class=\"ow\">in</span> k<span class=\"p\">}</span>\nparams<span class=\"o\">.</span>update<span class=\"p\">({</span>k<span class=\"p\">:</span> v<span class=\"p\">()</span> <span class=\"k\">if</span> <span class=\"nb\">callable</span><span class=\"p\">(</span>v<span class=\"p\">)</span> <span class=\"k\">else</span> v <span class=\"k\">for</span> k<span class=\"p\">,</span> v <span class=\"ow\">in</span> defaults<span class=\"o\">.</span>items<span class=\"p\">()})</span>\nobj <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span>model<span class=\"p\">(</span><span class=\"o\">**</span>params<span class=\"p\">)</span>\nobj<span class=\"o\">.</span>save<span class=\"p\">()</span>\n</code></pre></div>\n<p>På engelska betyder det att du börjar med alla nyckelordsargument som inte är <code class=\"docutils literal notranslate\">defaults</code> och som inte innehåller ett dubbelt understreck (vilket skulle indikera en icke-exakt uppslagning). Lägg sedan till innehållet i <code class=\"docutils literal notranslate\">defaults</code>, åsidosätt eventuella nycklar om det behövs, och använd resultatet som nyckelordsargument till modellklassen. Om det finns några callables i <code class=\"docutils literal notranslate\">defaults</code>, utvärdera dem. Som antyddes ovan är detta en förenkling av den algoritm som används, men den innehåller alla relevanta detaljer. Den interna implementationen har lite mer felkontroll än detta och hanterar några extra kantvillkor; om du är intresserad, läs koden.</p>\n<p>Om du har ett fält som heter <code class=\"docutils literal notranslate\">defaults</code> och vill använda det som en exakt uppslagning i <code class=\"docutils literal notranslate\">get_or_create()</code>, använder du <code class=\"docutils literal notranslate\">'defaults__exact'</code>, så här:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Foo<span class=\"o\">.</span>objects<span class=\"o\">.</span>get_or_create<span class=\"p\">(</span>defaults__exact<span class=\"o\">=</span><span class=\"s2\">&quot;bar&quot;</span><span class=\"p\">,</span> defaults<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;defaults&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;baz&quot;</span><span class=\"p\">})</span>\n</code></pre></div>\n<p>Metoden <code class=\"docutils literal notranslate\">get_or_create()</code> har ett liknande felbeteende som <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.create\" title=\"django.db.models.query.QuerySet.create\"><code class=\"xref py py-meth docutils literal notranslate\">create()</code></a> när du använder manuellt angivna primärnycklar. Om ett objekt behöver skapas och nyckeln redan finns i databasen utlöses en <a class=\"reference internal\" href=\"/sv/6.1/ref/exceptions/#django.db.IntegrityError\" title=\"django.db.IntegrityError\"><code class=\"xref py py-exc docutils literal notranslate\">IntegrityError</code></a>.</p>\n<p>Slutligen, ett ord om att använda <code class=\"docutils literal notranslate\">get_or_create()</code> i Django-vyer. Se till att endast använda den i <code class=\"docutils literal notranslate\">POST</code>-förfrågningar om du inte har en bra anledning att inte göra det. <code class=\"docutils literal notranslate\">GET</code>-förfrågningar bör inte ha någon effekt på data. Använd istället <code class=\"docutils literal notranslate\">POST</code> när en begäran till en sida har en sidoeffekt på dina data. För mer information, se <span class=\"target\" id=\"index-4\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc9110.html#section-9.2.1\"><strong>Säkra metoder</strong></a> i HTTP-specifikationen.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>Du kan använda <code class=\"docutils literal notranslate\">get_or_create()</code> genom <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a>-attribut och omvända relationer. I det fallet kommer du att begränsa frågorna inom ramen för den relationen. Det kan leda till vissa integritetsproblem om du inte använder det konsekvent.</p>\n<p>Gäller följande modeller:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span> <span class=\"nc\">Chapter</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    title <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">255</span><span class=\"p\">,</span> unique<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Book</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    title <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">256</span><span class=\"p\">)</span>\n    chapters <span class=\"o\">=</span> models<span class=\"o\">.</span>ManyToManyField<span class=\"p\">(</span>Chapter<span class=\"p\">)</span>\n</code></pre></div>\n<p>Du kan använda <code class=\"docutils literal notranslate\">get_or_create()</code> genom Book’s chapters-fält, men det hämtar bara inom kontexten för den boken:</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>book <span class=\"o\">=</span> Book<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>title<span class=\"o\">=</span><span class=\"s2\">&quot;Ulysses&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>book<span class=\"o\">.</span>chapters<span class=\"o\">.</span>get_or_create<span class=\"p\">(</span>title<span class=\"o\">=</span><span class=\"s2\">&quot;Telemachus&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">(&lt;Chapter: Telemachus&gt;, True)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>book<span class=\"o\">.</span>chapters<span class=\"o\">.</span>get_or_create<span class=\"p\">(</span>title<span class=\"o\">=</span><span class=\"s2\">&quot;Telemachus&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">(&lt;Chapter: Telemachus&gt;, False)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Chapter<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>title<span class=\"o\">=</span><span class=\"s2\">&quot;Chapter 1&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;Chapter: Chapter 1&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>book<span class=\"o\">.</span>chapters<span class=\"o\">.</span>get_or_create<span class=\"p\">(</span>title<span class=\"o\">=</span><span class=\"s2\">&quot;Chapter 1&quot;</span><span class=\"p\">)</span>\n<span class=\"go\"># Raises IntegrityError</span>\n</code></pre></div>\n<p>Detta händer eftersom det försöker hämta eller skapa ”Kapitel 1” genom boken ”Ulysses”, men det kan inte göra någotdera: relationen kan inte hämta det kapitlet eftersom det inte är relaterat till den boken, men det kan inte heller skapa det eftersom fältet <code class=\"docutils literal notranslate\">title</code> måste vara unikt.</p>\n</aside>\n</section>\n<section id=\"update-or-create\">\n<h4><code class=\"docutils literal notranslate\">uppdatera_eller_skapa()</code><a class=\"heading-anchor\" href=\"#update-or-create\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.update_or_create\">\n<span class=\"sig-name descname\">update_or_create</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">defaults<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">create_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.query.QuerySet.update_or_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.query.QuerySet.aupdate_or_create\">\n<span class=\"sig-name descname\">aupdate_or_create</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">defaults<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">create_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.query.QuerySet.aupdate_or_create\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">aupdate_or_create()</code></p>\n<p>En bekvämlighetsmetod för att uppdatera ett objekt med de givna <code class=\"docutils literal notranslate\">kwargs</code>, och skapa ett nytt om det behövs. Både <code class=\"docutils literal notranslate\">create_defaults</code> och <code class=\"docutils literal notranslate\">defaults</code> är dictionaries av (fält, värde) par. Värdena i både <code class=\"docutils literal notranslate\">create_defaults</code> och <code class=\"docutils literal notranslate\">defaults</code> kan vara callables. <code class=\"docutils literal notranslate\">defaults</code> används för att uppdatera objektet medan <code class=\"docutils literal notranslate\">create_defaults</code> används för create-operationen. Om <code class=\"docutils literal notranslate\">create_defaults</code> inte anges kommer <code class=\"docutils literal notranslate\">defaults</code> att användas för att skapa objektet.</p>\n<p>Returnerar en tupel av <code class=\"docutils literal notranslate\">(object, created)</code>, där <code class=\"docutils literal notranslate\">object</code> är det skapade eller uppdaterade objektet och <code class=\"docutils literal notranslate\">created</code> är en boolean som anger om ett nytt objekt skapades.</p>\n<p>Metoden <code class=\"docutils literal notranslate\">update_or_create</code> försöker hämta ett objekt från databasen baserat på de givna <code class=\"docutils literal notranslate\">kwargs</code>. Om en matchning hittas, uppdateras fälten som skickas i <code class=\"docutils literal notranslate\">defaults</code> dictionary.</p>\n<p>Detta är tänkt som en genväg till standardkod. Till exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>defaults <span class=\"o\">=</span> <span class=\"p\">{</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Bob&quot;</span><span class=\"p\">}</span>\ncreate_defaults <span class=\"o\">=</span> <span class=\"p\">{</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Bob&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;birthday&quot;</span><span class=\"p\">:</span> date<span class=\"p\">(</span><span class=\"mi\">1940</span><span class=\"p\">,</span> <span class=\"mi\">10</span><span class=\"p\">,</span> <span class=\"mi\">9</span><span class=\"p\">)}</span>\n<span class=\"k\">try</span><span class=\"p\">:</span>\n    obj <span class=\"o\">=</span> Person<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>first_name<span class=\"o\">=</span><span class=\"s2\">&quot;John&quot;</span><span class=\"p\">,</span> last_name<span class=\"o\">=</span><span class=\"s2\">&quot;Lennon&quot;</span><span class=\"p\">)</span>\n    <span class=\"k\">for</span> key<span class=\"p\">,</span> value <span class=\"ow\">in</span> defaults<span class=\"o\">.</span>items<span class=\"p\">():</span>\n        <span class=\"nb\">setattr</span><span class=\"p\">(</span>obj<span class=\"p\">,</span> key<span class=\"p\">,</span> value<span class=\"p\">)</span>\n    obj<span class=\"o\">.</span>save<span class=\"p\">()</span>\n<span class=\"k\">except</span> Person<span class=\"o\">.</span>DoesNotExist<span class=\"p\">:</span>\n    new_values <span class=\"o\">=</span> <span class=\"p\">{</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;John&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;last_name&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Lennon&quot;</span><span class=\"p\">}</span>\n    new_values<span class=\"o\">.</span>update<span class=\"p\">(</span>create_defaults<span class=\"p\">)</span>\n    obj <span class=\"o\">=</span> Person<span class=\"p\">(</span><span class=\"o\">**</span>new_values<span class=\"p\">)</span>\n    obj<span class=\"o\">.</span>save<span class=\"p\">()</span>\n</code></pre></div>\n<p>Det här mönstret blir ganska otympligt när antalet fält i en modell ökar. Exemplet ovan kan skrivas om med hjälp av <code class=\"docutils literal notranslate\">update_or_create()</code> på följande sätt:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>obj<span class=\"p\">,</span> created <span class=\"o\">=</span> Person<span class=\"o\">.</span>objects<span class=\"o\">.</span>update_or_create<span class=\"p\">(</span>\n    first_name<span class=\"o\">=</span><span class=\"s2\">&quot;John&quot;</span><span class=\"p\">,</span>\n    last_name<span class=\"o\">=</span><span class=\"s2\">&quot;Lennon&quot;</span><span class=\"p\">,</span>\n    defaults<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Bob&quot;</span><span class=\"p\">},</span>\n    create_defaults<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Bob&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;birthday&quot;</span><span class=\"p\">:</span> date<span class=\"p\">(</span><span class=\"mi\">1940</span><span class=\"p\">,</span> <span class=\"mi\">10</span><span class=\"p\">,</span> <span class=\"mi\">9</span><span class=\"p\">)},</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p>För en detaljerad beskrivning av hur namn som skickas i <code class=\"docutils literal notranslate\">kwargs</code> löses, se <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.get_or_create\" title=\"django.db.models.query.QuerySet.get_or_create\"><code class=\"xref py py-meth docutils literal notranslate\">get_or_create()</code></a>.</p>\n<p>Såsom beskrivs ovan i <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.get_or_create\" title=\"django.db.models.query.QuerySet.get_or_create\"><code class=\"xref py py-meth docutils literal notranslate\">get_or_create()</code></a>, är den här metoden känslig för ett tävlingsförhållande som kan leda till att flera rader infogas samtidigt om unikhet inte upprätthålls på databasnivå.</p>\n<p>Precis som <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.get_or_create\" title=\"django.db.models.query.QuerySet.get_or_create\"><code class=\"xref py py-meth docutils literal notranslate\">get_or_create()</code></a> och <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.create\" title=\"django.db.models.query.QuerySet.create\"><code class=\"xref py py-meth docutils literal notranslate\">create()</code></a>, om du använder manuellt angivna primära nycklar och ett objekt behöver skapas men nyckeln redan finns i databasen, kommer ett <a class=\"reference internal\" href=\"/sv/6.1/ref/exceptions/#django.db.IntegrityError\" title=\"django.db.IntegrityError\"><code class=\"xref py py-exc docutils literal notranslate\">IntegrityError</code></a> att uppstå.</p>\n</section>\n<section id=\"bulk-create\">\n<h4><code class=\"docutils literal notranslate\">bulk_create()</code><a class=\"heading-anchor\" href=\"#bulk-create\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.bulk_create\">\n<span class=\"sig-name descname\">bulk_create</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">objs</em>, <em class=\"sig-param\">batch_size<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">ignore_conflicts<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">update_conflicts<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">update_fields<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">unique_fields<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.bulk_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.query.QuerySet.abulk_create\">\n<span class=\"sig-name descname\">abulk_create</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">objs</em>, <em class=\"sig-param\">batch_size<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">ignore_conflicts<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">update_conflicts<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">update_fields<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">unique_fields<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.abulk_create\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">abulk_create()</code></p>\n<p>Den här metoden infogar den angivna listan med objekt i databasen på ett effektivt sätt (i allmänhet bara 1 fråga, oavsett hur många objekt det finns) och returnerar skapade objekt som en lista i samma ordning som den angivna:</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>objs <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>bulk_create<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"p\">[</span>\n<span class=\"gp\">... </span>        Entry<span class=\"p\">(</span>headline<span class=\"o\">=</span><span class=\"s2\">&quot;This is a test&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>        Entry<span class=\"p\">(</span>headline<span class=\"o\">=</span><span class=\"s2\">&quot;This is only a test&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    <span class=\"p\">]</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Detta har dock ett antal förbehåll:</p>\n<ul>\n<li><p>Modellens <code class=\"docutils literal notranslate\">save()</code>-metod <a class=\"reference internal\" href=\"/sv/6.1/topics/db/models/#methods-not-called-on-bulk-operations\"><span class=\"std std-ref\">anropas inte</span></a>, och signalerna <code class=\"docutils literal notranslate\">pre_save</code> och <code class=\"docutils literal notranslate\">post_save</code> skickas inte.</p></li>\n<li><p>Det fungerar inte med underordnade modeller i ett arvsscenario med flera tabeller.</p></li>\n<li><p>Om modellens primärnyckel är ett <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.AutoField\" title=\"django.db.models.AutoField\"><code class=\"xref py py-class docutils literal notranslate\">AutoField</code></a> eller har ett <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.Field.db_default\" title=\"django.db.models.Field.db_default\"><code class=\"xref py py-attr docutils literal notranslate\">db_default</code></a>-värde, och <code class=\"docutils literal notranslate\">ignore_conflicts</code> är <code class=\"docutils literal notranslate\">False</code>, kan primärnyckelattributet bara hämtas i vissa databaser (för närvarande PostgreSQL, MariaDB och SQLite). I andra databaser anges det inte.</p></li>\n<li><p>Det fungerar inte med många-till-manga-relationer.</p></li>\n<li><p>Den kastar <code class=\"docutils literal notranslate\">objs</code> till en lista, som fullt ut utvärderar <code class=\"docutils literal notranslate\">objs</code> om det är en generator. Castet gör det möjligt att inspektera alla objekt så att alla objekt med en manuellt inställd primärnyckel kan infogas först. Om du vill infoga objekt i satser utan att utvärdera hela generatorn på en gång kan du använda den här tekniken så länge objekten inte har några manuellt inställda primära nycklar:</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\">itertools</span> <span class=\"kn\">import</span> islice\n\nbatch_size <span class=\"o\">=</span> <span class=\"mi\">100</span>\nobjs <span class=\"o\">=</span> <span class=\"p\">(</span>Entry<span class=\"p\">(</span>headline<span class=\"o\">=</span><span class=\"s2\">&quot;Test </span><span class=\"si\">%s</span><span class=\"s2\">&quot;</span> <span class=\"o\">%</span> i<span class=\"p\">)</span> <span class=\"k\">for</span> i <span class=\"ow\">in</span> <span class=\"nb\">range</span><span class=\"p\">(</span><span class=\"mi\">1000</span><span class=\"p\">))</span>\n<span class=\"k\">while</span> <span class=\"kc\">True</span><span class=\"p\">:</span>\n    batch <span class=\"o\">=</span> <span class=\"nb\">list</span><span class=\"p\">(</span>islice<span class=\"p\">(</span>objs<span class=\"p\">,</span> batch_size<span class=\"p\">))</span>\n    <span class=\"k\">if</span> <span class=\"ow\">not</span> batch<span class=\"p\">:</span>\n        <span class=\"k\">break</span>\n    Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>bulk_create<span class=\"p\">(</span>batch<span class=\"p\">,</span> batch_size<span class=\"p\">)</span>\n</code></pre></div>\n</li>\n</ul>\n<p>Parametern <code class=\"docutils literal notranslate\">batch_size</code> styr hur många objekt som skapas i en enskild fråga. Standardinställningen är att skapa så många objekt i en batch som databasen tillåter. (SQLite och Oracle begränsar antalet parametrar i en fråga.)</p>\n<p>I databaser som stöder detta (alla utom Oracle) kan parametern <code class=\"docutils literal notranslate\">ignore_conflicts</code> ställas in på <code class=\"docutils literal notranslate\">True</code>, vilket innebär att databasen ignorerar misslyckanden med att infoga rader som inte uppfyller begränsningar som t.ex. duplicerade unika värden.</p>\n<p>På databaser som stöder det (alla utom Oracle), genom att ställa in parametern <code class=\"docutils literal notranslate\">update_conflicts</code> till <code class=\"docutils literal notranslate\">True</code>, berättar databasen att uppdatera <code class=\"docutils literal notranslate\">update_fields</code> när en radinsättning misslyckas med konflikter. På PostgreSQL och SQLite, förutom <code class=\"docutils literal notranslate\">update_fields</code>, måste en lista över <code class=\"docutils literal notranslate\">unique_fields</code> som kan vara i konflikt tillhandahållas.</p>\n<p>Om parametern <code class=\"docutils literal notranslate\">ignore_conflicts</code> aktiveras inaktiveras inställningen av primärnyckeln för varje modellinstans (om databasen normalt stöder detta).</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>I MySQL och MariaDB förvandlar inställningen av parametern <code class=\"docutils literal notranslate\">ignore_conflicts</code> till <code class=\"docutils literal notranslate\">True</code> vissa typer av fel, andra än duplicerade nycklar, till varningar. Även med Strikt läge. Till exempel: ogiltiga värden eller icke-nullbara överträdelser. Se <a class=\"reference external\" href=\"https://mariadb.com/kb/en/ignore/\">MySQL-dokumentationen</a> och <a class=\"reference external\" href=\"https://dev.mysql.com/doc/refman/en/sql-mode.html#ignore-strict-comparison\">MariaDB-dokumentationen</a> för mer information.</p>\n</aside>\n</section>\n<section id=\"bulk-update\">\n<h4><code class=\"docutils literal notranslate\">bulk_update()</code><a class=\"heading-anchor\" href=\"#bulk-update\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.bulk_update\">\n<span class=\"sig-name descname\">bulk_update</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">objs</em>, <em class=\"sig-param\">fields</em>, <em class=\"sig-param\">batch_size<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.bulk_update\"><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.query.QuerySet.abulk_update\">\n<span class=\"sig-name descname\">abulk_update</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">objs</em>, <em class=\"sig-param\">fields</em>, <em class=\"sig-param\">batch_size<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.abulk_update\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">abulk_update()</code></p>\n<p>Denna metod uppdaterar effektivt de angivna fälten på de angivna modellinstanserna, vanligtvis med en fråga, och returnerar antalet uppdaterade 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>objs <span class=\"o\">=</span> <span class=\"p\">[</span>\n<span class=\"gp\">... </span>    Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>headline<span class=\"o\">=</span><span class=\"s2\">&quot;Entry 1&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>headline<span class=\"o\">=</span><span class=\"s2\">&quot;Entry 2&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>objs<span class=\"p\">[</span><span class=\"mi\">0</span><span class=\"p\">]</span><span class=\"o\">.</span>headline <span class=\"o\">=</span> <span class=\"s2\">&quot;This is entry 1&quot;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>objs<span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"o\">.</span>headline <span class=\"o\">=</span> <span class=\"s2\">&quot;This is entry 2&quot;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>bulk_update<span class=\"p\">(</span>objs<span class=\"p\">,</span> <span class=\"p\">[</span><span class=\"s2\">&quot;headline&quot;</span><span class=\"p\">])</span>\n<span class=\"go\">2</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"#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> används för att spara ändringarna, så det här är effektivare än att iterera genom listan med modeller och anropa <code class=\"docutils literal notranslate\">save()</code> på var och en av dem, men det har några förbehåll:</p>\n<ul>\n<li><p>Du kan inte uppdatera modellens primärnyckel.</p></li>\n<li><p>Varje modells <code class=\"docutils literal notranslate\">save()</code>-metod <a class=\"reference internal\" href=\"/sv/6.1/topics/db/models/#methods-not-called-on-bulk-operations\"><span class=\"std std-ref\">anropas inte</span></a>, och signalerna <a class=\"reference internal\" href=\"/sv/6.1/ref/signals/#django.db.models.signals.pre_save\" title=\"django.db.models.signals.pre_save\"><code class=\"xref py py-attr docutils literal notranslate\">pre_save</code></a> och <a class=\"reference internal\" href=\"/sv/6.1/ref/signals/#django.db.models.signals.post_save\" title=\"django.db.models.signals.post_save\"><code class=\"xref py py-attr docutils literal notranslate\">post_save</code></a> skickas inte.</p></li>\n<li><p>Om du uppdaterar ett stort antal kolumner i ett stort antal rader kan den SQL som genereras bli mycket stor. Undvik detta genom att ange en lämplig <code class=\"docutils literal notranslate\">batch_size</code>.</p></li>\n<li><p>När du uppdaterar ett stort antal objekt bör du vara medveten om att <code class=\"docutils literal notranslate\">bulk_update()</code> förbereder alla <code class=\"docutils literal notranslate\">WHEN</code>-klausuler för varje objekt i alla batchar innan några frågor körs. Detta kan kräva mer minne än förväntat. För att minska minnesanvändningen kan du använda en metod som denna:</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\">itertools</span> <span class=\"kn\">import</span> islice\n\nbatch_size <span class=\"o\">=</span> <span class=\"mi\">100</span>\nids_iter <span class=\"o\">=</span> <span class=\"nb\">iter</span><span class=\"p\">(</span><span class=\"nb\">range</span><span class=\"p\">(</span><span class=\"mi\">1000</span><span class=\"p\">))</span>\n<span class=\"k\">while</span> ids <span class=\"o\">:=</span> <span class=\"nb\">list</span><span class=\"p\">(</span>islice<span class=\"p\">(</span>ids_iter<span class=\"p\">,</span> batch_size<span class=\"p\">)):</span>\n    batch <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>id__in<span class=\"o\">=</span>ids<span class=\"p\">)</span>\n    <span class=\"k\">for</span> entry <span class=\"ow\">in</span> batch<span class=\"p\">:</span>\n        entry<span class=\"o\">.</span>headline <span class=\"o\">=</span> <span class=\"sa\">f</span><span class=\"s2\">&quot;Updated headline </span><span class=\"si\">{</span>entry<span class=\"o\">.</span>pk<span class=\"si\">}</span><span class=\"s2\">&quot;</span>\n    Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>bulk_update<span class=\"p\">(</span>batch<span class=\"p\">,</span> <span class=\"p\">[</span><span class=\"s2\">&quot;headline&quot;</span><span class=\"p\">],</span> batch_size<span class=\"o\">=</span>batch_size<span class=\"p\">)</span>\n</code></pre></div>\n</li>\n<li><p>Uppdatering av fält som definieras på förfäder med flera tabeller kommer att medföra en extra fråga per förfader.</p></li>\n<li><p>När en enskild batch innehåller dubbletter kommer endast den första förekomsten i den batchen att resultera i en uppdatering.</p></li>\n<li><p>Det antal uppdaterade objekt som returneras av funktionen kan vara färre än det antal objekt som skickades in. Detta kan bero på duplicerade objekt som skickas in och som uppdateras i samma batch eller tävlingsförhållanden som gör att objekten inte längre finns i databasen.</p></li>\n</ul>\n<p>Parametern <code class=\"docutils literal notranslate\">batch_size</code> styr hur många objekt som sparas i en enda fråga. Standardinställningen är att uppdatera alla objekt i en batch, med undantag för SQLite och Oracle som har begränsningar för antalet variabler som används i en fråga.</p>\n</section>\n<section id=\"count\">\n<h4><code class=\"docutils literal notranslate\">count()</code><a class=\"heading-anchor\" href=\"#count\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.count\">\n<span class=\"sig-name descname\">count</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.count\"><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.query.QuerySet.acount\">\n<span class=\"sig-name descname\">acount</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.acount\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">acount()</code></p>\n<p>Returnerar ett heltal som representerar antalet objekt i databasen som matchar <code class=\"docutils literal notranslate\">QuerySet</code>.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># Returns the total number of entries in the database.</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>count<span class=\"p\">()</span>\n\n<span class=\"c1\"># Returns the number of entries whose headline contains &#39;Lennon&#39;</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>headline__contains<span class=\"o\">=</span><span class=\"s2\">&quot;Lennon&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>count<span class=\"p\">()</span>\n</code></pre></div>\n<p>Ett <code class=\"docutils literal notranslate\">count()</code>-anrop utför en <code class=\"docutils literal notranslate\">SELECT COUNT(*)</code> bakom kulisserna, så du bör alltid använda <code class=\"docutils literal notranslate\">count()</code> hellre än att ladda alla poster i Python-objekt och anropa <code class=\"docutils literal notranslate\">len()</code> på resultatet (såvida du inte behöver ladda objekten i minnet ändå, i vilket fall <code class=\"docutils literal notranslate\">len()</code> kommer att vara snabbare).</p>\n<p>Observera att om du vill ha antalet objekt i en <code class=\"docutils literal notranslate\">QuerySet</code> och även hämtar modellinstanser från den (t.ex. genom att iterera över den), är det förmodligen effektivare att använda <code class=\"docutils literal notranslate\">len(queryset)</code> som inte orsakar en extra databasfråga som <code class=\"docutils literal notranslate\">count()</code> skulle göra.</p>\n<p>Om frågeuppsättningen redan har hämtats i sin helhet kommer <code class=\"docutils literal notranslate\">count()</code> att använda den längden i stället för att göra en extra databasförfrågan.</p>\n</section>\n<section id=\"in-bulk\">\n<h4><code class=\"docutils literal notranslate\">in_bulk()</code><a class=\"heading-anchor\" href=\"#in-bulk\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.in_bulk\">\n<span class=\"sig-name descname\">in_bulk</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">id_list<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"keyword-only-separator o\"><abbr title=\"Keyword-only parameters separator (PEP 3102)\">*</abbr></span></em>, <em class=\"sig-param\">field_name<span class=\"o\">=</span><span class=\"default_value\">'pk'</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.in_bulk\"><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.query.QuerySet.ain_bulk\">\n<span class=\"sig-name descname\">ain_bulk</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">id_list<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"keyword-only-separator o\"><abbr title=\"Keyword-only parameters separator (PEP 3102)\">*</abbr></span></em>, <em class=\"sig-param\">field_name<span class=\"o\">=</span><span class=\"default_value\">'pk'</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.ain_bulk\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">ain_bulk()</code></p>\n<p>Tar en lista med fältvärden (<code class=\"docutils literal notranslate\">id_list</code>) och <code class=\"docutils literal notranslate\">field_name</code> för dessa värden och returnerar en ordbok som mappar varje värde till en instans av objektet med det angivna fältvärdet. Inga <a class=\"reference internal\" href=\"/sv/6.1/ref/exceptions/#django.core.exceptions.ObjectDoesNotExist\" title=\"django.core.exceptions.ObjectDoesNotExist\"><code class=\"xref py py-exc docutils literal notranslate\">django.core.exceptions.ObjectDoesNotExist</code></a>-undantag kommer någonsin att skapas av <code class=\"docutils literal notranslate\">in_bulk</code>; det vill säga, alla <code class=\"docutils literal notranslate\">id_list</code>-värden som inte matchar någon instans kommer helt enkelt att ignoreras. Om <code class=\"docutils literal notranslate\">id_list</code> inte anges returneras alla objekt i queryset. <code class=\"docutils literal notranslate\">field_name</code> måste vara ett unikt fält eller ett distinkt fält (om det bara finns ett fält som anges i <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.distinct\" title=\"django.db.models.query.QuerySet.distinct\"><code class=\"xref py py-meth docutils literal notranslate\">distinct()</code></a>). <code class=\"docutils literal notranslate\">field_name</code> är som standard den primära nyckeln.</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>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>in_bulk<span class=\"p\">([</span><span class=\"mi\">1</span><span class=\"p\">])</span>\n<span class=\"go\">{1: &lt;Blog: Beatles Blog&gt;}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>in_bulk<span class=\"p\">([</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">])</span>\n<span class=\"go\">{1: &lt;Blog: Beatles Blog&gt;, 2: &lt;Blog: Cheddar Talk&gt;}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>in_bulk<span class=\"p\">([])</span>\n<span class=\"go\">{}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>in_bulk<span class=\"p\">()</span>\n<span class=\"go\">{1: &lt;Blog: Beatles Blog&gt;, 2: &lt;Blog: Cheddar Talk&gt;, 3: &lt;Blog: Django Weblog&gt;}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>in_bulk<span class=\"p\">([</span><span class=\"s2\">&quot;beatles_blog&quot;</span><span class=\"p\">],</span> field_name<span class=\"o\">=</span><span class=\"s2\">&quot;slug&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">{&#39;beatles_blog&#39;: &lt;Blog: Beatles Blog&gt;}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>distinct<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>in_bulk<span class=\"p\">(</span>field_name<span class=\"o\">=</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">{&#39;Beatles Blog&#39;: &lt;Blog: Beatles Blog&gt;, &#39;Cheddar Talk&#39;: &lt;Blog: Cheddar Talk&gt;, &#39;Django Weblog&#39;: &lt;Blog: Django Weblog&gt;}</span>\n</code></pre></div>\n<p>Om du skickar en tom lista till <code class=\"docutils literal notranslate\">in_bulk()</code> får du en tom ordbok.</p>\n<aside class=\"version-note version-changed\" data-version=\"6.1\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 6.1</p><p>Stöd för att kedja <code class=\"docutils literal notranslate\">in_bulk()</code> efter <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.values\" title=\"django.db.models.query.QuerySet.values\"><code class=\"xref py py-meth docutils literal notranslate\">values()</code></a> eller <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.values_list\" title=\"django.db.models.query.QuerySet.values_list\"><code class=\"xref py py-meth docutils literal notranslate\">values_list()</code></a> lades till.</p>\n</aside>\n</section>\n<section id=\"iterator\">\n<h4><code class=\"docutils literal notranslate\">iterator()</code><a class=\"heading-anchor\" href=\"#iterator\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.iterator\">\n<span class=\"sig-name descname\">iterator</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">chunk_size<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.iterator\"><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.query.QuerySet.aiterator\">\n<span class=\"sig-name descname\">aiterator</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">chunk_size<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.aiterator\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">aiterator()</code></p>\n<p>Utvärderar <code class=\"docutils literal notranslate\">QuerySet</code> (genom att utföra frågan) och returnerar en <a class=\"reference external\" href=\"https://docs.python.org/3/glossary.html#term-iterator\" title=\"(in Python v3.14)\"><span>iterator</span></a> över resultaten, eller en <a class=\"reference external\" href=\"https://docs.python.org/3/glossary.html#term-asynchronous-iterator\" title=\"(in Python v3.14)\"><span>asynchronous iterator</span></a> om du anropar den asynkrona versionen <code class=\"docutils literal notranslate\">aiterator</code>.</p>\n<p>En <code class=\"docutils literal notranslate\">QuerySet</code> cachelagrar vanligtvis sina resultat internt så att upprepade utvärderingar inte leder till ytterligare frågor. <code class=\"docutils literal notranslate\">iterator()</code> läser däremot resultaten direkt utan att cachelagra på <code class=\"docutils literal notranslate\">QuerySet</code>-nivå. För en <code class=\"docutils literal notranslate\">QuerySet</code> som returnerar ett stort antal objekt som du bara behöver komma åt en gång kan detta ge bättre prestanda och en betydande minskning av minnesanvändningen.</p>\n<p>Observera att om du använder <code class=\"docutils literal notranslate\">iterator()</code> på en <code class=\"docutils literal notranslate\">QuerySet</code> som redan har utvärderats, tvingas den att utvärderas igen, vilket innebär att frågan upprepas.</p>\n<p><code class=\"docutils literal notranslate\">iterator()</code> är kompatibel med tidigare anrop till <code class=\"docutils literal notranslate\">prefetch_related()</code> så länge som <code class=\"docutils literal notranslate\">chunk_size</code> anges. Större värden kräver färre frågor för att åstadkomma prefetching till priset av större minnesanvändning.</p>\n<p>I vissa databaser (t.ex. Oracle, <a class=\"reference external\" href=\"https://www.sqlite.org/limits.html#max_variable_number\">SQLite</a>) kan det maximala antalet termer i en SQL <code class=\"docutils literal notranslate\">IN</code>-klausul vara begränsat. Därför bör värden under denna gräns användas. (I synnerhet vid prefetching över två eller flera relationer bör en <code class=\"docutils literal notranslate\">chunk_size</code> vara tillräckligt liten för att det förväntade antalet resultat för varje prefetched relation fortfarande faller under gränsen)</p>\n<p>Så länge QuerySet inte hämtar några relaterade objekt i förväg, kommer Django att använda en implicit standard på 2000 om man inte anger något värde för <code class=\"docutils literal notranslate\">chunk_size</code>.</p>\n<p>Beroende på databasens backend kommer sökresultaten antingen att laddas på en gång eller strömmas från databasen med hjälp av cursorer på serversidan.</p>\n<section id=\"with-server-side-cursors\">\n<h5>Med markörer på serversidan<a class=\"heading-anchor\" href=\"#with-server-side-cursors\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h5>\n<p>Oracle och <a class=\"reference internal\" href=\"/sv/6.1/ref/databases/#postgresql-server-side-cursors\"><span class=\"std std-ref\">PostgreSQL</span></a> använder markörer på serversidan för att strömma resultat från databasen utan att ladda hela resultatuppsättningen i minnet.</p>\n<p>Oracle-databasdrivrutinen använder alltid markörer på serversidan.</p>\n<p>Med markörer på serversidan anger parametern <code class=\"docutils literal notranslate\">chunk_size</code> antalet resultat som ska cachas på databasdrivrutinsnivå. Genom att hämta större bitar minskas antalet rundresor mellan databasdrivrutinen och databasen, men det kostar minne.</p>\n<p>På PostgreSQL kommer markörer på serversidan endast att användas när inställningen <code class=\"xref std std-setting docutils literal notranslate\">DISABLE_SERVER_SIDE_CURSORS &lt;DATABASE-DISABLE_SERVER_SIDE_CURSORS&gt;`</code> är <code class=\"docutils literal notranslate\">False</code>. Läs <a class=\"reference internal\" href=\"/sv/6.1/ref/databases/#transaction-pooling-server-side-cursors\"><span class=\"std std-ref\">Transaktionspoolning och cursorer på serversidan</span></a> om du använder en anslutningspooler som är konfigurerad i transaktionspoolningsläge. När markörer på serversidan är inaktiverade är beteendet detsamma som i databaser som inte stöder markörer på serversidan.</p>\n</section>\n<section id=\"without-server-side-cursors\">\n<h5>Utan markörer på serversidan<a class=\"heading-anchor\" href=\"#without-server-side-cursors\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h5>\n<p>MySQL stöder inte strömmande resultat, och därför laddar Python-databasdrivrutinen hela resultatuppsättningen i minnet. Resultatuppsättningen omvandlas sedan till Python-radobjekt av databasadaptern med hjälp av metoden <code class=\"docutils literal notranslate\">fetchmany()</code> som definieras i <span class=\"target\" id=\"index-5\"></span><a class=\"pep reference external\" href=\"https://peps.python.org/pep-0249/\"><strong>PEP 249</strong></a>.</p>\n<p>SQLite kan hämta resultat i satser med <code class=\"docutils literal notranslate\">fetchmany()</code>, men eftersom SQLite inte tillhandahåller isolering mellan frågor inom en anslutning måste du vara försiktig när du skriver till den tabell som itereras över. Se <a class=\"reference internal\" href=\"/sv/6.1/ref/databases/#sqlite-isolation\"><span class=\"std std-ref\">Isolering vid användning av QuerySet.iterator()</span></a> för mer information.</p>\n<p>Parametern <code class=\"docutils literal notranslate\">chunk_size</code> styr storleken på de batcher som Django hämtar från databasdrivrutinen. Större satser minskar omkostnaderna för att kommunicera med databasdrivrutinen på bekostnad av en liten ökning av minnesförbrukningen.</p>\n<p>Så länge som QuerySet inte hämtar några relaterade objekt, kommer inget värde för <code class=\"docutils literal notranslate\">chunk_size</code> att resultera i att Django använder en implicit standard på 2000, ett värde som härrör från <a class=\"reference external\" href=\"https://www.postgresql.org/message-id/4D2F2C71.8080805%40dndg.it\">en beräkning på psycopg-postlistan</a>:</p>\n<blockquote>\n<div><p>Om vi antar att raderna består av 10-20 kolumner med en blandning av text och numeriska data kommer 2000 att hämta mindre än 100 kB data, vilket verkar vara en bra kompromiss mellan antalet rader som överförs och den data som kasseras om loopen avslutas tidigt.</p>\n</div></blockquote>\n</section>\n</section>\n<section id=\"latest\">\n<h4><code class=\"docutils literal notranslate\">nyaste()</code><a class=\"heading-anchor\" href=\"#latest\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.latest\">\n<span class=\"sig-name descname\">latest</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>fields</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.latest\"><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.query.QuerySet.alatest\">\n<span class=\"sig-name descname\">alatest</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>fields</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.alatest\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">alatest()</code></p>\n<p>Returnerar det senaste objektet i tabellen baserat på det eller de fält som anges.</p>\n<p>I detta exempel returneras det senaste <code class=\"docutils literal notranslate\">Entry</code> i tabellen, enligt fältet <code class=\"docutils literal notranslate\">pub_date</code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>latest<span class=\"p\">(</span><span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Du kan också välja den senaste baserat på flera fält. Till exempel:, för att välja den <code class=\"docutils literal notranslate\">Entry</code> med det tidigaste <code class=\"docutils literal notranslate\">expire_date</code> när två poster har samma <code class=\"docutils literal notranslate\">pub_date</code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>latest<span class=\"p\">(</span><span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;-expire_date&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Det negativa tecknet i <code class=\"docutils literal notranslate\">'-expire_date'</code> betyder att <code class=\"docutils literal notranslate\">expire_date</code> ska sorteras i <em>fallande</em> ordning. Eftersom <code class=\"docutils literal notranslate\">latest()</code> får det sista resultatet, väljs det <code class=\"docutils literal notranslate\">Entry</code> som har det tidigaste <code class=\"docutils literal notranslate\">expire_date</code>.</p>\n<p>Om din modells <a class=\"reference internal\" href=\"/sv/6.1/topics/db/models/#meta-options\"><span class=\"std std-ref\">Meta</span></a> specificerar <a class=\"reference internal\" href=\"/sv/6.1/ref/models/options/#django.db.models.Options.get_latest_by\" title=\"django.db.models.Options.get_latest_by\"><code class=\"xref py py-attr docutils literal notranslate\">get_latest_by</code></a>, kan du utelämna alla argument till <code class=\"docutils literal notranslate\">earliest()</code> eller <code class=\"docutils literal notranslate\">latest()</code>. De fält som anges i <a class=\"reference internal\" href=\"/sv/6.1/ref/models/options/#django.db.models.Options.get_latest_by\" title=\"django.db.models.Options.get_latest_by\"><code class=\"xref py py-attr docutils literal notranslate\">get_latest_by</code></a> kommer att användas som standard.</p>\n<p>Liksom <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.get\" title=\"django.db.models.query.QuerySet.get\"><code class=\"xref py py-meth docutils literal notranslate\">get()</code></a> utlöser <code class=\"docutils literal notranslate\">earliest()</code> och <code class=\"docutils literal notranslate\">latest()</code> <a class=\"reference internal\" href=\"/sv/6.1/ref/models/class/#django.db.models.Model.DoesNotExist\" title=\"django.db.models.Model.DoesNotExist\"><code class=\"xref py py-exc docutils literal notranslate\">DoesNotExist</code></a> om det inte finns något objekt med de angivna parametrarna.</p>\n<p>Observera att <code class=\"docutils literal notranslate\">earliest()</code> och <code class=\"docutils literal notranslate\">latest()</code> endast finns för bekvämlighetens och läsbarhetens skull.</p>\n<aside class=\"admonition-earliest-and-latest-may-return-instances-with-null-dates admonition\" role=\"note\">\n<p class=\"admonition-title\"><code class=\"docutils literal notranslate\">earliest()</code> och <code class=\"docutils literal notranslate\">latest()</code> kan returnera instanser med null-datum.</p>\n<p>Eftersom beställningen delegeras till databasen kan resultat på fält som tillåter nollvärden beställas på olika sätt om du använder olika databaser. Till exempel: sorterar PostgreSQL och MySQL null-värden som om de är högre än icke-null-värden, medan SQLite gör motsatsen.</p>\n<p>Du kanske vill filtrera bort nollvärden:</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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__isnull<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span><span class=\"o\">.</span>latest<span class=\"p\">(</span><span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n</aside>\n</section>\n<section id=\"earliest\">\n<h4><code class=\"docutils literal notranslate\">earliest()</code><a class=\"heading-anchor\" href=\"#earliest\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.earliest\">\n<span class=\"sig-name descname\">earliest</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>fields</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.earliest\"><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.query.QuerySet.aearliest\">\n<span class=\"sig-name descname\">aearliest</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>fields</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.aearliest\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">aearliest()</code></p>\n<p>Fungerar annars som <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.latest\" title=\"django.db.models.query.QuerySet.latest\"><code class=\"xref py py-meth docutils literal notranslate\">latest()</code></a> förutom att riktningen är ändrad.</p>\n</section>\n<section id=\"first\">\n<h4><code class=\"docutils literal notranslate\">första()</code><a class=\"heading-anchor\" href=\"#first\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.first\">\n<span class=\"sig-name descname\">first</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.first\"><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.query.QuerySet.afirst\">\n<span class=\"sig-name descname\">afirst</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.afirst\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">afirst()</code></p>\n<p>Returnerar det första objektet som matchar frågeuppsättningen, eller <code class=\"docutils literal notranslate\">None</code> om det inte finns något matchande objekt. Om <code class=\"docutils literal notranslate\">QuerySet</code> inte har någon definierad sortering (och sorteringen inte har rensats uttryckligen genom att anropa <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.order_by\" title=\"django.db.models.query.QuerySet.order_by\"><code class=\"xref py py-meth docutils literal notranslate\">order_by()</code></a> utan argument) sorteras frågeuppsättningen automatiskt efter primärnyckeln. Detta kan påverka aggregeringsresultat enligt beskrivningen i <a class=\"reference internal\" href=\"/sv/6.1/topics/db/aggregation/#aggregation-ordering-interaction\"><span class=\"std std-ref\">Interaktion med order_by()</span></a>.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>p <span class=\"o\">=</span> Article<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;title&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>first<span class=\"p\">()</span>\n</code></pre></div>\n<p>Observera att <code class=\"docutils literal notranslate\">first()</code> är en bekvämlighetsmetod, följande kodprov är likvärdigt med ovanstående exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">try</span><span class=\"p\">:</span>\n    p <span class=\"o\">=</span> Article<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;title&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span>\n<span class=\"k\">except</span> <span class=\"ne\">IndexError</span><span class=\"p\">:</span>\n    p <span class=\"o\">=</span> <span class=\"kc\">None</span>\n</code></pre></div>\n<aside class=\"version-note version-changed\" data-version=\"6.1\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 6.1</p><p><code class=\"docutils literal notranslate\">first()</code> och <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.last\" title=\"django.db.models.query.QuerySet.last\"><code class=\"xref py py-meth docutils literal notranslate\">last()</code></a> sorterar inte längre efter primärnyckeln när sorteringen har rensats uttryckligen genom att anropa <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.order_by\" title=\"django.db.models.query.QuerySet.order_by\"><code class=\"xref py py-meth docutils literal notranslate\">order_by()</code></a> utan argument.</p>\n</aside>\n</section>\n<section id=\"last\">\n<h4><code class=\"docutils literal notranslate\">last()</code><a class=\"heading-anchor\" href=\"#last\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.last\">\n<span class=\"sig-name descname\">last</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.last\"><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.query.QuerySet.alast\">\n<span class=\"sig-name descname\">alast</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.alast\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">alast()</code></p>\n<p>Fungerar som <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.first\" title=\"django.db.models.query.QuerySet.first\"><code class=\"xref py py-meth docutils literal notranslate\">first()</code></a>, men returnerar det sista objektet i frågeuppsättningen.</p>\n</section>\n<section id=\"aggregate\">\n<h4><code class=\"docutils literal notranslate\">aggregate()</code><a class=\"heading-anchor\" href=\"#aggregate\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.aggregate\">\n<span class=\"sig-name descname\">aggregate</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>args</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.aggregate\"><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.query.QuerySet.aaggregate\">\n<span class=\"sig-name descname\">aaggregate</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>args</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.aaggregate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">aaggregate()</code></p>\n<p>Returnerar en ordbok med aggregerade värden (medelvärden, summor etc.) som beräknats över <code class=\"docutils literal notranslate\">QuerySet</code>. Varje argument till <code class=\"docutils literal notranslate\">aggregate()</code> anger ett värde som ska ingå i den ordbok som returneras.</p>\n<p>De aggregeringsfunktioner som tillhandahålls av Django beskrivs i <a class=\"reference internal\" href=\"#id6\">Aggregeringsfunktioner</a> nedan. Eftersom aggregat också är <a class=\"reference internal\" href=\"/sv/6.1/ref/models/expressions/\"><span class=\"doc\">query expressions</span></a>, kan du kombinera aggregat med andra aggregat eller värden för att skapa komplexa aggregat.</p>\n<p>Aggregat som anges med nyckelordsargument kommer att använda nyckelordet som namn på annoteringen. För anonyma argument genereras ett namn som baseras på namnet på aggregatfunktionen och det modellfält som aggregeras. Komplexa aggregat kan inte använda anonyma argument utan måste ange ett nyckelordsargument som alias.</p>\n<p>Om du t.ex. arbetar med blogginlägg kanske du vill veta hur många författare som har skrivit blogginlägg:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> Count\n<span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>aggregate<span class=\"p\">(</span>Count<span class=\"p\">(</span><span class=\"s2\">&quot;entry__authors&quot;</span><span class=\"p\">))</span>\n<span class=\"go\">{&#39;entry__authors__count&#39;: 16}</span>\n</code></pre></div>\n<p>Genom att använda ett nyckelordsargument för att ange aggregeringsfunktionen kan du styra namnet på det aggregeringsvärde som returneras:</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>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>aggregate<span class=\"p\">(</span>number_of_authors<span class=\"o\">=</span>Count<span class=\"p\">(</span><span class=\"s2\">&quot;entry__authors&quot;</span><span class=\"p\">))</span>\n<span class=\"go\">{&#39;number_of_authors&#39;: 16}</span>\n</code></pre></div>\n<p>För en djupgående diskussion om aggregering, se <a class=\"reference internal\" href=\"/sv/6.1/topics/db/aggregation/\"><span class=\"doc\">the topic guide on Aggregation</span></a>.</p>\n</section>\n<section id=\"exists\">\n<h4><code class=\"docutils literal notranslate\">exists()</code><a class=\"heading-anchor\" href=\"#exists\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.exists\">\n<span class=\"sig-name descname\">exists</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.exists\"><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.query.QuerySet.aexists\">\n<span class=\"sig-name descname\">aexists</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.aexists\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">aexists()</code></p>\n<p>Returnerar <code class=\"docutils literal notranslate\">True</code> om <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> innehåller några resultat, och <code class=\"docutils literal notranslate\">False</code> om inte. Detta försöker utföra frågan på enklast och snabbast möjliga sätt, men det <em>kör</em> nästan samma fråga som en normal <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a>-fråga.</p>\n<p><a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.exists\" title=\"django.db.models.query.QuerySet.exists\"><code class=\"xref py py-meth docutils literal notranslate\">exists()</code></a> är användbart för sökningar som gäller förekomsten av objekt i en <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a>, särskilt i samband med en stor <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a>.</p>\n<p>För att ta reda på om en frågeuppsättning innehåller några objekt:</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\">if</span> some_queryset<span class=\"o\">.</span>exists<span class=\"p\">():</span>\n    <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"s2\">&quot;There is at least one object in some_queryset&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Vilket kommer att vara snabbare än:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">if</span> some_queryset<span class=\"p\">:</span>\n    <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"s2\">&quot;There is at least one object in some_queryset&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>… men inte i någon större utsträckning (vilket innebär att det krävs en stor frågeuppsättning för effektivitetsvinster).</p>\n<p>Dessutom, om en <code class=\"docutils literal notranslate\">some_queryset</code> ännu inte har utvärderats, men du vet att den kommer att göra det någon gång, kommer det att göra mer totalt arbete att använda <code class=\"docutils literal notranslate\">some_queryset.exists()</code> (en fråga för existenskontrollen plus en extra för att senare hämta resultaten) än att använda <code class=\"docutils literal notranslate\">bool(some_queryset)</code>, som hämtar resultaten och sedan kontrollerar om några returnerades.</p>\n</section>\n<section id=\"contains\">\n<h4><code class=\"docutils literal notranslate\">contains()</code><a class=\"heading-anchor\" href=\"#contains\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.contains\">\n<span class=\"sig-name descname\">contains</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">obj</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.contains\"><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.query.QuerySet.acontains\">\n<span class=\"sig-name descname\">acontains</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">obj</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.acontains\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">acontains()</code></p>\n<p>Returnerar <code class=\"docutils literal notranslate\">True</code> om <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> innehåller <code class=\"docutils literal notranslate\">obj</code>, och <code class=\"docutils literal notranslate\">False</code> om inte. Detta försöker utföra frågan på det enklaste och snabbaste sättet som möjligt.</p>\n<p><a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.contains\" title=\"django.db.models.query.QuerySet.contains\"><code class=\"xref py py-meth docutils literal notranslate\">contains()</code></a> är användbart för att kontrollera ett objekts medlemskap i en <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a>, särskilt i samband med en stor <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a>.</p>\n<p>För att kontrollera om en frågeuppsättning innehåller ett visst objekt:</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\">if</span> some_queryset<span class=\"o\">.</span>contains<span class=\"p\">(</span>obj<span class=\"p\">):</span>\n    <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"s2\">&quot;Entry contained in queryset&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Detta går snabbare än följande, som kräver utvärdering och iteration genom hela frågeuppsättningen:</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\">if</span> obj <span class=\"ow\">in</span> some_queryset<span class=\"p\">:</span>\n    <span class=\"nb\">print</span><span class=\"p\">(</span><span class=\"s2\">&quot;Entry contained in queryset&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Precis som <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.exists\" title=\"django.db.models.query.QuerySet.exists\"><code class=\"xref py py-meth docutils literal notranslate\">exists()</code></a>, om <code class=\"docutils literal notranslate\">some_queryset</code> ännu inte har utvärderats, men du vet att det kommer att utvärderas någon gång, kommer användningen av <code class=\"docutils literal notranslate\">some_queryset.contains(obj)</code> att göra en ytterligare databasförfrågan, vilket i allmänhet resulterar i långsammare prestanda.</p>\n</section>\n<section id=\"update\">\n<h4><code class=\"docutils literal notranslate\">uppdatera()</code><a class=\"heading-anchor\" href=\"#update\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.update\">\n<span class=\"sig-name descname\">update</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.update\"><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.query.QuerySet.aupdate\">\n<span class=\"sig-name descname\">aupdate</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.aupdate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">aupdate()</code></p>\n<p>Utför en SQL-uppdateringsfråga för de angivna fälten och returnerar antalet matchade rader (som kanske inte är lika med antalet uppdaterade rader om vissa rader redan har det nya värdet).</p>\n<p>Om du t.ex. vill stänga av kommentarer för alla blogginlägg som publicerades 2010 kan du göra så 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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__year<span class=\"o\">=</span><span class=\"mi\">2010</span><span class=\"p\">)</span><span class=\"o\">.</span>update<span class=\"p\">(</span>comments_on<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>(Detta förutsätter att din <code class=\"docutils literal notranslate\">Entry</code>-modell har fälten <code class=\"docutils literal notranslate\">pub_date</code> och <code class=\"docutils literal notranslate\">comments_on</code>)</p>\n<p>Du kan uppdatera flera fält - det finns ingen begränsning för hur många. Här uppdaterar vi till exempel fälten <code class=\"docutils literal notranslate\">comments_on</code> och <code class=\"docutils literal notranslate\">headline</code>:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__year<span class=\"o\">=</span><span class=\"mi\">2010</span><span class=\"p\">)</span><span class=\"o\">.</span>update<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    comments_on<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">,</span> headline<span class=\"o\">=</span><span class=\"s2\">&quot;This is old&quot;</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Metoden <code class=\"docutils literal notranslate\">update()</code> tillämpas direkt, och den enda begränsningen för <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> som uppdateras är att den bara kan uppdatera kolumner i modellens huvudtabell, inte i relaterade modeller. Du kan till exempel inte göra så 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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>update<span class=\"p\">(</span>blog__name<span class=\"o\">=</span><span class=\"s2\">&quot;foo&quot;</span><span class=\"p\">)</span>  <span class=\"c1\"># Won&#39;t work!</span>\n</code></pre></div>\n<p>Det är dock fortfarande möjligt att filtrera baserat på relaterade fält:</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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>blog__id<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span><span class=\"o\">.</span>update<span class=\"p\">(</span>comments_on<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Du kan inte anropa <code class=\"docutils literal notranslate\">update()</code> på en <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> som har fått en slice tagen eller på annat sätt inte längre kan filtreras.</p>\n<p>Metoden <code class=\"docutils literal notranslate\">update()</code> returnerar antalet berörda rader:</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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">64</span><span class=\"p\">)</span><span class=\"o\">.</span>update<span class=\"p\">(</span>comments_on<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"go\">1</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>slug<span class=\"o\">=</span><span class=\"s2\">&quot;nonexistent-slug&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>update<span class=\"p\">(</span>comments_on<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"go\">0</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__year<span class=\"o\">=</span><span class=\"mi\">2010</span><span class=\"p\">)</span><span class=\"o\">.</span>update<span class=\"p\">(</span>comments_on<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"go\">132</span>\n</code></pre></div>\n<p>Om du bara uppdaterar en post och inte behöver göra något med modellobjektet är det effektivaste sättet att anropa <code class=\"docutils literal notranslate\">update()</code> i stället för att ladda modellobjektet i minnet. Till exempel:, istället för att göra 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>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\">10</span><span class=\"p\">)</span>\ne<span class=\"o\">.</span>comments_on <span class=\"o\">=</span> <span class=\"kc\">False</span>\ne<span class=\"o\">.</span>save<span class=\"p\">()</span>\n</code></pre></div>\n<p>…gör så här:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">10</span><span class=\"p\">)</span><span class=\"o\">.</span>update<span class=\"p\">(</span>comments_on<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Genom att använda <code class=\"docutils literal notranslate\">update()</code> förhindras också ett tävlingsförhållande där något kan ändras i din databas under den korta tidsperioden mellan laddning av objektet och anrop av <code class=\"docutils literal notranslate\">save()</code>.</p>\n<aside class=\"admonition-mysql-does-not-support-self-select-updates admonition\" role=\"note\">\n<p class=\"admonition-title\">MySQL stöder inte självvalda uppdateringar</p>\n<p>På MySQL kan <code class=\"docutils literal notranslate\">QuerySet.update()</code> exekvera en <code class=\"docutils literal notranslate\">SELECT</code> följt av en <code class=\"docutils literal notranslate\">UPDATE</code> istället för en enda <code class=\"docutils literal notranslate\">UPDATE</code> vid filtrering på relaterade tabeller, vilket kan införa ett tävlingsvillkor om samtidiga ändringar sker mellan frågorna. För att säkerställa atomicitet bör du överväga att använda transaktioner eller undvika sådana filtervillkor på MySQL.</p>\n</aside>\n<p>Tänk slutligen på att <code class=\"docutils literal notranslate\">update()</code> gör en uppdatering på SQL-nivå och därför <a class=\"reference internal\" href=\"/sv/6.1/topics/db/models/#methods-not-called-on-bulk-operations\"><span class=\"std std-ref\">inte anropar</span></a> några metoder <code class=\"docutils literal notranslate\">save()</code> på dina modeller och inte heller skickar signalerna <a class=\"reference internal\" href=\"/sv/6.1/ref/signals/#django.db.models.signals.pre_save\" title=\"django.db.models.signals.pre_save\"><code class=\"xref py py-attr docutils literal notranslate\">pre_save</code></a> eller <a class=\"reference internal\" href=\"/sv/6.1/ref/signals/#django.db.models.signals.post_save\" title=\"django.db.models.signals.post_save\"><code class=\"xref py py-attr docutils literal notranslate\">post_save</code></a> (som är en följd av att anropa <a class=\"reference internal\" href=\"/sv/6.1/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">Model.save()</code></a>). Om du vill uppdatera en grupp poster för en modell som har en anpassad metod <a class=\"reference internal\" href=\"/sv/6.1/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a> ska du iterera över dem och anropa <a class=\"reference internal\" href=\"/sv/6.1/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a>, 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\">for</span> e <span class=\"ow\">in</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__year<span class=\"o\">=</span><span class=\"mi\">2010</span><span class=\"p\">):</span>\n    e<span class=\"o\">.</span>comments_on <span class=\"o\">=</span> <span class=\"kc\">False</span>\n    e<span class=\"o\">.</span>save<span class=\"p\">()</span>\n</code></pre></div>\n<section id=\"ordered-queryset\">\n<h5>Beställd queryset<a class=\"heading-anchor\" href=\"#ordered-queryset\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h5>\n<p>Att kedja <code class=\"docutils literal notranslate\">order_by()</code> med <code class=\"docutils literal notranslate\">update()</code> stöds endast av MariaDB och MySQL, och ignoreras för andra databaser. Detta är användbart för att uppdatera ett unikt fält i den ordning som anges utan konflikter. Till exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s2\">&quot;-number&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>update<span class=\"p\">(</span>number<span class=\"o\">=</span>F<span class=\"p\">(</span><span class=\"s2\">&quot;number&quot;</span><span class=\"p\">)</span> <span class=\"o\">+</span> <span class=\"mi\">1</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><code class=\"docutils literal notranslate\">order_by()</code>-satsen ignoreras om den innehåller annoteringar, ärvda fält eller uppslagningar som sträcker sig över relationer.</p>\n</aside>\n</section>\n</section>\n<section id=\"delete\">\n<h4><code class=\"docutils literal notranslate\">delete()</code><a class=\"heading-anchor\" href=\"#delete\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.delete\">\n<span class=\"sig-name descname\">delete</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.delete\"><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.query.QuerySet.adelete\">\n<span class=\"sig-name descname\">adelete</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.adelete\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">adelete()</code></p>\n<p>Utför en SQL-raderingsfråga för alla rader i <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> och returnerar antalet borttagna objekt samt en ordbok med antalet borttagningar per objekttyp. Returvärdet räknar instanser från relaterade modeller om Django emulerar kaskadbeteende via Python-varianter av <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.ForeignKey.on_delete\" title=\"django.db.models.ForeignKey.on_delete\"><code class=\"xref py py-attr docutils literal notranslate\">on_delete</code></a>. I annat fall rapporterar returvärdet, för databasvarianter som <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.DB_CASCADE\" title=\"django.db.models.DB_CASCADE\"><code class=\"xref py py-attr docutils literal notranslate\">DB_CASCADE</code></a>, endast instanser av <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a>-modellen.</p>\n<p><code class=\"docutils literal notranslate\">Delete()</code> tillämpas omedelbart. Du kan inte anropa <code class=\"docutils literal notranslate\">delete()</code> på en <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> som har fått en slice tagen eller på annat sätt inte längre kan filtreras.</p>\n<p>Till exempel: för att radera alla inlägg i en viss blogg:</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>pk<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n\n<span class=\"go\"># Delete all the entries belonging to this Blog.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>blog<span class=\"o\">=</span>b<span class=\"p\">)</span><span class=\"o\">.</span>delete<span class=\"p\">()</span>\n<span class=\"go\">(4, {&#39;blog.Entry&#39;: 2, &#39;blog.Entry_authors&#39;: 2})</span>\n</code></pre></div>\n<p>Som standard emulerar Djangos <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> SQL-begränsningen <code class=\"docutils literal notranslate\">ON DELETE CASCADE</code> - med andra ord kommer alla objekt med utländska nycklar som pekar på de objekt som ska raderas att raderas tillsammans med dem. Till 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>blogs <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()</span>\n\n<span class=\"go\"># This will delete all Blogs and all of their Entry objects.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>blogs<span class=\"o\">.</span>delete<span class=\"p\">()</span>\n<span class=\"go\">(5, {&#39;blog.Blog&#39;: 1, &#39;blog.Entry&#39;: 2, &#39;blog.Entry_authors&#39;: 2})</span>\n</code></pre></div>\n<p>Detta kaskadbeteende kan anpassas via argumentet <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.ForeignKey.on_delete\" title=\"django.db.models.ForeignKey.on_delete\"><code class=\"xref py py-attr docutils literal notranslate\">on_delete</code></a> till <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a>.</p>\n<p>Metoden <code class=\"docutils literal notranslate\">delete()</code> utför en bulkradering och <a class=\"reference internal\" href=\"/sv/6.1/topics/db/models/#methods-not-called-on-bulk-operations\"><span class=\"std std-ref\">anropar inte</span></a> några <code class=\"docutils literal notranslate\">delete()</code>-metoder för dina modeller. Den skickar dock signalerna <a class=\"reference internal\" href=\"/sv/6.1/ref/signals/#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> och <a class=\"reference internal\" href=\"/sv/6.1/ref/signals/#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> för alla borttagna objekt (inklusive kaskadborttagningar). Signaler skickas inte när <code class=\"docutils literal notranslate\">DB_CASCADE</code> används. Dessutom returnerar <code class=\"docutils literal notranslate\">delete()</code> inte information om objekt som tagits bort av databasvarianter (<code class=\"docutils literal notranslate\">DB_*</code>) för argumentet <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.ForeignKey.on_delete\" title=\"django.db.models.ForeignKey.on_delete\"><code class=\"xref py py-attr docutils literal notranslate\">on_delete</code></a>, t.ex. <code class=\"docutils literal notranslate\">DB_CASCADE</code>.</p>\n<p>Django behöver inte hämta objekt till minnet när de tas bort i följande fall:</p>\n<ol class=\"arabic simple\">\n<li><p>Om relaterade fält använder <code class=\"docutils literal notranslate\">DB_*</code>-alternativ.</p></li>\n<li><p>Om det inte finns några kaskader eller mottagare av raderingssignaler.</p></li>\n</ol>\n<p>I dessa fall kan Django använda en snabbare väg och ta bort objekt utan att hämta dem, vilket kan ge betydligt lägre minnesanvändning och färre utförda frågor.</p>\n<p>ForeignKeys som är inställda på <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/#django.db.models.ForeignKey.on_delete\" title=\"django.db.models.ForeignKey.on_delete\"><code class=\"xref py py-attr docutils literal notranslate\">on_delete</code></a> <code class=\"docutils literal notranslate\">DO_NOTHING</code> förhindrar inte att man tar den snabba vägen vid radering.</p>\n<p>Observera att de frågor som genereras vid borttagning av objekt är en implementeringsdetalj som kan komma att ändras.</p>\n<aside class=\"version-note version-changed\" data-version=\"6.1\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 6.1</p><p>Stöd för <code class=\"docutils literal notranslate\">DB_*</code>-varianterna av attributet <code class=\"docutils literal notranslate\">on_delete</code> lades till.</p>\n</aside>\n</section>\n<section id=\"as-manager\">\n<h4><code class=\"docutils literal notranslate\">as_manager()</code><a class=\"heading-anchor\" href=\"#as-manager\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.as_manager\">\n<em class=\"property\"><span class=\"k\">classmethod</span> </em><span class=\"sig-name descname\">as_manager</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.as_manager\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Klassmetod som returnerar en instans av <a class=\"reference internal\" href=\"/sv/6.1/topics/db/managers/#django.db.models.Manager\" title=\"django.db.models.Manager\"><code class=\"xref py py-class docutils literal notranslate\">Manager</code></a> med en kopia av <code class=\"docutils literal notranslate\">QuerySet</code>’s metoder. Se <a class=\"reference internal\" href=\"/sv/6.1/topics/db/managers/#create-manager-with-queryset-methods\"><span class=\"std std-ref\">Skapa en manager med QuerySet-metoder</span></a> för mer information.</p>\n<p>Observera att till skillnad från de andra posterna i detta avsnitt har denna inte en asynkron variant eftersom den inte exekverar en fråga.</p>\n</section>\n<section id=\"explain\">\n<h4><code class=\"docutils literal notranslate\">explain()</code><a class=\"heading-anchor\" href=\"#explain\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.query.QuerySet.explain\">\n<span class=\"sig-name descname\">explain</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">format<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.explain\"><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.query.QuerySet.aexplain\">\n<span class=\"sig-name descname\">aexplain</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">format<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.query.QuerySet.aexplain\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">aexplain()</code></p>\n<p>Returnerar en sträng av <code class=\"docutils literal notranslate\">QuerySet</code>:s exekveringsplan, som innehåller information om hur databasen skulle exekvera frågan, inklusive eventuella index eller sammanfogningar som skulle användas. Om du känner till dessa detaljer kan det hjälpa dig att förbättra prestanda för långsamma frågor.</p>\n<p>Till exempel: när du använder PostgreSQL:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>title<span class=\"o\">=</span><span class=\"s2\">&quot;My Blog&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>explain<span class=\"p\">())</span>\n<span class=\"go\">Seq Scan on blog  (cost=0.00..35.50 rows=10 width=12)</span>\n<span class=\"go\">  Filter: (title = &#39;My Blog&#39;::bpchar)</span>\n</code></pre></div>\n<p>Utdata skiljer sig avsevärt mellan olika databaser.</p>\n<p><code class=\"docutils literal notranslate\">explain()</code> stöds av alla inbyggda databasbackends utom Oracle eftersom en implementering där inte är okomplicerad.</p>\n<p>Parametern <code class=\"docutils literal notranslate\">format</code> ändrar utdataformatet från databasens standardformat, som vanligtvis är textbaserat. PostgreSQL stöder formaten <code class=\"docutils literal notranslate\">'TEXT'</code>, <code class=\"docutils literal notranslate\">'JSON'</code>, <code class=\"docutils literal notranslate\">'YAML'</code> och <code class=\"docutils literal notranslate\">'XML'</code>. MariaDB och MySQL stöder formaten <code class=\"docutils literal notranslate\">'TEXT'</code> (även kallat <code class=\"docutils literal notranslate\">'TRADITIONAL'</code>) och <code class=\"docutils literal notranslate\">'JSON'</code>. MySQL 8.0.16+ stöder också ett förbättrat <code class=\"docutils literal notranslate\">'TREE'</code>-format, som liknar PostgreSQLs <code class=\"docutils literal notranslate\">'TEXT'</code>-utdata och används som standard om det stöds.</p>\n<p>Vissa databaser accepterar flaggor som kan ge mer information om frågan. Skicka dessa flaggor som nyckelordsargument. Till exempel: när du använder PostgreSQL:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>title<span class=\"o\">=</span><span class=\"s2\">&quot;My Blog&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>explain<span class=\"p\">(</span>verbose<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span> analyze<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">))</span>\n<span class=\"go\">Seq Scan on public.blog  (cost=0.00..35.50 rows=10 width=12) (actual time=0.004..0.004 rows=10 loops=1)</span>\n<span class=\"go\">  Output: id, title</span>\n<span class=\"go\">  Filter: (blog.title = &#39;My Blog&#39;::bpchar)</span>\n<span class=\"go\">Planning time: 0.064 ms</span>\n<span class=\"go\">Execution time: 0.058 ms</span>\n</code></pre></div>\n<p>På vissa databaser kan flaggor göra att frågan körs på ett sätt som kan få negativa följder för databasen. Flaggan <code class=\"docutils literal notranslate\">ANALYZE</code> som stöds av MariaDB, MySQL och PostgreSQL kan till exempel leda till dataändringar om det finns triggers eller om en funktion anropas, även för en fråga av typen <code class=\"docutils literal notranslate\">SELECT</code>.</p>\n</section>\n</section>\n<section id=\"field-lookups\">\n<span id=\"id4\"></span><h3><code class=\"docutils literal notranslate\">Field</code> uppslagningar<a class=\"heading-anchor\" href=\"#field-lookups\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Fältuppslag anger huvudvillkoret i en SQL-sats <code class=\"docutils literal notranslate\">WHERE</code>. De anges som nyckelordsargument till <code class=\"docutils literal notranslate\">QuerySet</code>-metoderna <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.filter\" title=\"django.db.models.query.QuerySet.filter\"><code class=\"xref py py-meth docutils literal notranslate\">filter()</code></a>, <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.exclude\" title=\"django.db.models.query.QuerySet.exclude\"><code class=\"xref py py-meth docutils literal notranslate\">exclude()</code></a> och <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.get\" title=\"django.db.models.query.QuerySet.get\"><code class=\"xref py py-meth docutils literal notranslate\">get()</code></a>.</p>\n<p>För en introduktion, se <a class=\"reference internal\" href=\"/sv/6.1/topics/db/queries/#field-lookups-intro\"><span class=\"std std-ref\">dokumentation om modeller och databasfrågor</span></a>.</p>\n<p>Djangos inbyggda lookups listas nedan. Det är också möjligt att skriva <a class=\"reference internal\" href=\"/sv/6.1/howto/custom-lookups/\"><span class=\"doc\">custom lookups</span></a> för modellfält.</p>\n<p>Som en bekvämlighet när ingen uppslagstyp anges (som i <code class=\"docutils literal notranslate\">Entry.objects.get(id=14)</code>) antas uppslagstypen vara <a class=\"reference internal\" href=\"#std-fieldlookup-exact\"><code class=\"xref std std-lookup docutils literal notranslate\">exact</code></a>.</p>\n<section id=\"exact\">\n<span id=\"std-fieldlookup-exact\"></span><h4><code class=\"docutils literal notranslate\">exakt</code><a class=\"heading-anchor\" href=\"#exact\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Exakt träff. Om värdet som anges för jämförelse är <code class=\"docutils literal notranslate\">None</code> tolkas det som SQL <code class=\"docutils literal notranslate\">NULL</code> (se <a class=\"reference internal\" href=\"#std-fieldlookup-isnull\"><code class=\"xref std std-lookup docutils literal notranslate\">isnull</code></a> för mer information). <a class=\"reference internal\" href=\"/sv/6.1/topics/db/queries/#std-fieldlookup-jsonfield.key\"><code class=\"xref std std-lookup docutils literal notranslate\">Uppslag efter nyckel och index</code></a> är undantag: de tolkar i stället <code class=\"docutils literal notranslate\">None</code> som JSON <code class=\"docutils literal notranslate\">null</code>.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>id__exact<span class=\"o\">=</span><span class=\"mi\">14</span><span class=\"p\">)</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>id__exact<span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>SQL-ekvivalenter:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> id <span class=\"o\">=</span> <span class=\"mi\">14</span><span class=\"p\">;</span>\n<span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> id <span class=\"k\">IS</span> <span class=\"k\">NULL</span><span class=\"p\">;</span>\n</code></pre></div>\n<aside class=\"admonition-mysql-comparisons admonition\" role=\"note\">\n<p class=\"admonition-title\">Jämförelser med MySQL</p>\n<p>I MySQL avgör en databastabells ”collation”-inställning om <code class=\"docutils literal notranslate\">exakt</code>-jämförelser är skiftlägeskänsliga. Detta är en databasinställning, <em>inte</em> en Django-inställning. Det är möjligt att konfigurera dina MySQL-tabeller för att använda skiftlägeskänsliga jämförelser, men vissa kompromisser är inblandade. För mer information om detta, se <a class=\"reference internal\" href=\"/sv/6.1/ref/databases/#mysql-collation\"><span class=\"std std-ref\">collation section</span></a> i <a class=\"reference internal\" href=\"/sv/6.1/ref/databases/\"><span class=\"doc\">databases</span></a> dokumentation.</p>\n</aside>\n</section>\n<section id=\"iexact\">\n<span id=\"std-fieldlookup-iexact\"></span><h4><code class=\"docutils literal notranslate\">iexakt</code><a class=\"heading-anchor\" href=\"#iexact\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Exakt matchning utan skiftlägeskänslighet. Om det värde som anges för jämförelse är <code class=\"docutils literal notranslate\">None</code> tolkas det som en SQL <code class=\"docutils literal notranslate\">NULL</code> (se <code class=\"xref std std-lookup docutils literal notranslate\">isnull`</code> för mer information).</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>name__iexact<span class=\"o\">=</span><span class=\"s2\">&quot;beatles blog&quot;</span><span class=\"p\">)</span>\nBlog<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>name__iexact<span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>SQL-ekvivalenter:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> name <span class=\"k\">ILIKE</span> <span class=\"s1\">&#39;beatles blog&#39;</span><span class=\"p\">;</span>\n<span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> name <span class=\"k\">IS</span> <span class=\"k\">NULL</span><span class=\"p\">;</span>\n</code></pre></div>\n<p>Observera att den första frågan kommer att matcha <code class=\"docutils literal notranslate\">'Beatles Blog'</code>, <code class=\"docutils literal notranslate\">'beatles blog'</code>, <code class=\"docutils literal notranslate\">'BeAtLes BLoG'</code>, etc.</p>\n<aside class=\"admonition-sqlite-users admonition\" role=\"note\">\n<p class=\"admonition-title\">SQLite-användare</p>\n<p>När du använder SQLite-backend och icke-ASCII-strängar, tänk på <a class=\"reference internal\" href=\"/sv/6.1/ref/databases/#sqlite-string-matching\"><span class=\"std std-ref\">databasanteckning</span></a> om strängjämförelser. SQLite gör inte skiftlägesokänslig matchning för icke-ASCII-strängar.</p>\n</aside>\n</section>\n<section id=\"std-fieldlookup-contains\">\n<span id=\"id5\"></span><h4><code class=\"docutils literal notranslate\">innehåller</code><a class=\"heading-anchor\" href=\"#std-fieldlookup-contains\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Case-sensitive containment test.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>headline__contains<span class=\"o\">=</span><span class=\"s2\">&quot;Lennon&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>SQL-ekvivalent:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> headline <span class=\"k\">LIKE</span> <span class=\"s1\">&#39;%Lennon%&#39;</span><span class=\"p\">;</span>\n</code></pre></div>\n<p>(Den exakta SQL-syntaxen varierar mellan olika databasmotorer)</p>\n<p>Observera att detta kommer att matcha rubriken <code class=\"docutils literal notranslate\">'Lennon hedrad idag'</code> men inte <code class=\"docutils literal notranslate\">'lennon hedrad idag'</code>.</p>\n<aside class=\"admonition-sqlite-users admonition\" role=\"note\">\n<p class=\"admonition-title\">SQLite-användare</p>\n<p>SQLite stöder inte skiftlägeskänsliga <code class=\"docutils literal notranslate\">LIKE</code>-satser; <code class=\"docutils literal notranslate\">contains</code> fungerar som <code class=\"docutils literal notranslate\">icontains</code> för SQLite. Se <a class=\"reference internal\" href=\"/sv/6.1/ref/databases/#sqlite-string-matching\"><span class=\"std std-ref\">database note</span></a> för mer information.</p>\n</aside>\n</section>\n<section id=\"icontains\">\n<span id=\"std-fieldlookup-icontains\"></span><h4><code class=\"docutils literal notranslate\">ikoner</code><a class=\"heading-anchor\" href=\"#icontains\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Case-insensitive containment test.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>headline__icontains<span class=\"o\">=</span><span class=\"s2\">&quot;Lennon&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>SQL-ekvivalent:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> headline <span class=\"k\">ILIKE</span> <span class=\"s1\">&#39;%Lennon%&#39;</span><span class=\"p\">;</span>\n</code></pre></div>\n<p>(Den exakta SQL-syntaxen varierar mellan olika databasmotorer)</p>\n<aside class=\"admonition-sqlite-users admonition\" role=\"note\">\n<p class=\"admonition-title\">SQLite-användare</p>\n<p>När du använder SQLite-backend och icke-ASCII-strängar, tänk på <a class=\"reference internal\" href=\"/sv/6.1/ref/databases/#sqlite-string-matching\"><span class=\"std std-ref\">database note</span></a> om strängjämförelser.</p>\n</aside>\n</section>\n<section id=\"in\">\n<span id=\"std-fieldlookup-in\"></span><h4><code class=\"docutils literal notranslate\">in</code><a class=\"heading-anchor\" href=\"#in\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>I en given iterabel; ofta en lista, tupel eller queryset. Det är inte ett vanligt användningsfall, men strängar (som är iterabla) accepteras.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>id__in<span class=\"o\">=</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">3</span><span class=\"p\">,</span> <span class=\"mi\">4</span><span class=\"p\">])</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>headline__in<span class=\"o\">=</span><span class=\"s2\">&quot;abc&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>SQL-ekvivalenter:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> id <span class=\"k\">IN</span> <span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">3</span><span class=\"p\">,</span> <span class=\"mi\">4</span><span class=\"p\">);</span>\n<span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> headline <span class=\"k\">IN</span> <span class=\"p\">(</span><span class=\"s1\">&#39;a&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;b&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;c&#39;</span><span class=\"p\">);</span>\n</code></pre></div>\n<p>Du kan också använda en queryset för att dynamiskt utvärdera listan med värden i stället för att tillhandahålla en lista med bokstavliga värden:</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>inner_qs <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>name__contains<span class=\"o\">=</span><span class=\"s2\">&quot;Cheddar&quot;</span><span class=\"p\">)</span>\nentries <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>blog__in<span class=\"o\">=</span>inner_qs<span class=\"p\">)</span>\n</code></pre></div>\n<p>Detta queryset kommer att utvärderas som ett subselect-svar:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> blog<span class=\"p\">.</span>id <span class=\"k\">IN</span> <span class=\"p\">(</span><span class=\"k\">SELECT</span> id <span class=\"k\">FROM</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> NAME <span class=\"k\">LIKE</span> <span class=\"s1\">&#39;%Cheddar%&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Om du skickar in en <code class=\"docutils literal notranslate\">QuerySet</code> som är resultatet av <code class=\"docutils literal notranslate\">values()</code> eller <code class=\"docutils literal notranslate\">values_list()</code> som värde till en <code class=\"docutils literal notranslate\">__in</code> lookup, måste du se till att du bara extraherar ett fält i resultatet. Det här fungerar till exempel (filtrering på bloggnamn):</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>inner_qs <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>name__contains<span class=\"o\">=</span><span class=\"s2\">&quot;Ch&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>values<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">)</span>\nentries <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>blog__name__in<span class=\"o\">=</span>inner_qs<span class=\"p\">)</span>\n</code></pre></div>\n<p>Detta exempel kommer att leda till ett undantag, eftersom den inre frågan försöker extrahera två fältvärden, där endast ett förväntas:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># Bad code! Will raise a TypeError.</span>\ninner_qs <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>name__contains<span class=\"o\">=</span><span class=\"s2\">&quot;Ch&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>values<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;id&quot;</span><span class=\"p\">)</span>\nentries <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>blog__name__in<span class=\"o\">=</span>inner_qs<span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"admonition-null-values-and-three-valued-logic admonition\" id=\"null-and-three-valued-logic\" role=\"note\">\n<p class=\"admonition-title\"><code class=\"docutils literal notranslate\">NULL</code> values and three-valued logic</p>\n<p>When using a subquery (a <code class=\"docutils literal notranslate\">QuerySet</code>) on the right-hand side of an\n<code class=\"docutils literal notranslate\">__in</code> lookup, if the subquery returns any <code class=\"docutils literal notranslate\">NULL</code> values, it can\nproduce unexpected results due to SQL’s three-valued logic.</p>\n<p>For example, when using <code class=\"docutils literal notranslate\">exclude(field__in=subquery)</code>, if the subquery\nreturns even a single <code class=\"docutils literal notranslate\">NULL</code> value, the SQL <code class=\"docutils literal notranslate\">NOT IN</code> comparison\nevaluates to <code class=\"docutils literal notranslate\">UNKNOWN</code> for all rows, resulting in an empty queryset.</p>\n<p>To avoid this, filter out <code class=\"docutils literal notranslate\">NULL</code> values from the subquery:</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>inner_qs <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>name__isnull<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span><span class=\"o\">.</span>values<span class=\"p\">(</span><span class=\"s2\">&quot;pk&quot;</span><span class=\"p\">)</span>\nentries <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>exclude<span class=\"p\">(</span>blog__in<span class=\"o\">=</span>inner_qs<span class=\"p\">)</span>\n</code></pre></div>\n<p>Alternatively, rewrite the query to use a NULL-safe\n<a class=\"reference internal\" href=\"/sv/6.1/ref/models/expressions/#django.db.models.Exists\" title=\"django.db.models.Exists\"><code class=\"xref py py-class docutils literal notranslate\">Exists</code></a> subquery.</p>\n</aside>\n<aside class=\"admonition-performance-considerations admonition\" id=\"nested-queries-performance\" role=\"note\">\n<p class=\"admonition-title\">Överväganden om prestanda</p>\n<p>Var försiktig med att använda nästlade frågor och förstå din databasservers prestandaegenskaper (om du är osäker, jämför!). Vissa databasbackends, framför allt MySQL, optimerar inte nästlade frågor särskilt bra. I dessa fall är det mer effektivt att extrahera en lista med värden och sedan skicka den till den andra frågan. Det vill säga, kör två frågor istället för en:</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>values <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>name__contains<span class=\"o\">=</span><span class=\"s2\">&quot;Cheddar&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>values_list<span class=\"p\">(</span><span class=\"s2\">&quot;pk&quot;</span><span class=\"p\">,</span> flat<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\nentries <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>blog__in<span class=\"o\">=</span><span class=\"nb\">list</span><span class=\"p\">(</span>values<span class=\"p\">))</span>\n</code></pre></div>\n<p>Notera <code class=\"docutils literal notranslate\">list()</code>-anropet runt bloggen <code class=\"docutils literal notranslate\">QuerySet</code> för att tvinga fram körning av den första frågan. Utan det skulle en nästlad fråga exekveras, eftersom <a class=\"reference internal\" href=\"/sv/6.1/topics/db/queries/#querysets-are-lazy\"><span class=\"std std-ref\">”QuerySet”: ”De är lata</span></a>.</p>\n</aside>\n</section>\n<section id=\"gt\">\n<span id=\"std-fieldlookup-gt\"></span><h4><code class=\"docutils literal notranslate\">gt</code><a class=\"heading-anchor\" href=\"#gt\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Större än.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>id__gt<span class=\"o\">=</span><span class=\"mi\">4</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>SQL-ekvivalent:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> id <span class=\"o\">&gt;</span> <span class=\"mi\">4</span><span class=\"p\">;</span>\n</code></pre></div>\n</section>\n<section id=\"gte\">\n<span id=\"std-fieldlookup-gte\"></span><h4><code class=\"docutils literal notranslate\">gte</code><a class=\"heading-anchor\" href=\"#gte\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Större än eller lika med.</p>\n</section>\n<section id=\"lt\">\n<span id=\"std-fieldlookup-lt\"></span><h4><code class=\"docutils literal notranslate\">lt</code><a class=\"heading-anchor\" href=\"#lt\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Mindre än.</p>\n</section>\n<section id=\"lte\">\n<span id=\"std-fieldlookup-lte\"></span><h4><code class=\"docutils literal notranslate\">lte</code><a class=\"heading-anchor\" href=\"#lte\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Mindre än eller lika med.</p>\n</section>\n<section id=\"startswith\">\n<span id=\"std-fieldlookup-startswith\"></span><h4><code class=\"docutils literal notranslate\">börjar med</code><a class=\"heading-anchor\" href=\"#startswith\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Case-sensitive börjar med.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>headline__startswith<span class=\"o\">=</span><span class=\"s2\">&quot;Lennon&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>SQL-ekvivalent:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> headline <span class=\"k\">LIKE</span> <span class=\"s1\">&#39;Lennon%&#39;</span><span class=\"p\">;</span>\n</code></pre></div>\n<p>(Den exakta SQL-syntaxen varierar mellan olika databasmotorer)</p>\n<p>SQLite stöder inte skiftlägeskänsliga <code class=\"docutils literal notranslate\">LIKE</code>-satser; <code class=\"docutils literal notranslate\">startswith</code> fungerar som <code class=\"docutils literal notranslate\">istartswith</code> för SQLite.</p>\n</section>\n<section id=\"istartswith\">\n<span id=\"std-fieldlookup-istartswith\"></span><h4><code class=\"docutils literal notranslate\">istartswith</code><a class=\"heading-anchor\" href=\"#istartswith\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Case-insensitive börjar med.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>headline__istartswith<span class=\"o\">=</span><span class=\"s2\">&quot;Lennon&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>SQL-ekvivalent:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> headline <span class=\"k\">ILIKE</span> <span class=\"s1\">&#39;Lennon%&#39;</span><span class=\"p\">;</span>\n</code></pre></div>\n<p>(Den exakta SQL-syntaxen varierar mellan olika databasmotorer)</p>\n<aside class=\"admonition-sqlite-users admonition\" role=\"note\">\n<p class=\"admonition-title\">SQLite-användare</p>\n<p>När du använder SQLite-backend och icke-ASCII-strängar, tänk på <a class=\"reference internal\" href=\"/sv/6.1/ref/databases/#sqlite-string-matching\"><span class=\"std std-ref\">database note</span></a> om strängjämförelser.</p>\n</aside>\n</section>\n<section id=\"endswith\">\n<span id=\"std-fieldlookup-endswith\"></span><h4><code class=\"docutils literal notranslate\">slutar med</code><a class=\"heading-anchor\" href=\"#endswith\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Case-sensitive slutar med.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>headline__endswith<span class=\"o\">=</span><span class=\"s2\">&quot;Lennon&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>SQL-ekvivalent:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> headline <span class=\"k\">LIKE</span> <span class=\"s1\">&#39;%Lennon&#39;</span><span class=\"p\">;</span>\n</code></pre></div>\n<p>(Den exakta SQL-syntaxen varierar mellan olika databasmotorer)</p>\n<aside class=\"admonition-sqlite-users admonition\" role=\"note\">\n<p class=\"admonition-title\">SQLite-användare</p>\n<p>SQLite stöder inte skiftlägeskänsliga <code class=\"docutils literal notranslate\">LIKE</code>-satser; <code class=\"docutils literal notranslate\">endswith</code> fungerar som <code class=\"docutils literal notranslate\">iendswith</code> för SQLite. Se <a class=\"reference internal\" href=\"/sv/6.1/ref/databases/#sqlite-string-matching\"><span class=\"std std-ref\">database note</span></a>-dokumentationen för mer information.</p>\n</aside>\n</section>\n<section id=\"iendswith\">\n<span id=\"std-fieldlookup-iendswith\"></span><h4>”i vänskap med<a class=\"heading-anchor\" href=\"#iendswith\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Case-insensitive slutar med.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>headline__iendswith<span class=\"o\">=</span><span class=\"s2\">&quot;Lennon&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>SQL-ekvivalent:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> headline <span class=\"k\">ILIKE</span> <span class=\"s1\">&#39;%Lennon&#39;</span><span class=\"p\">;</span>\n</code></pre></div>\n<p>(Den exakta SQL-syntaxen varierar mellan olika databasmotorer)</p>\n<aside class=\"admonition-sqlite-users admonition\" role=\"note\">\n<p class=\"admonition-title\">SQLite-användare</p>\n<p>När du använder SQLite-backend och icke-ASCII-strängar, tänk på <a class=\"reference internal\" href=\"/sv/6.1/ref/databases/#sqlite-string-matching\"><span class=\"std std-ref\">database note</span></a> om strängjämförelser.</p>\n</aside>\n</section>\n<section id=\"range\">\n<span id=\"std-fieldlookup-range\"></span><h4><code class=\"docutils literal notranslate\">intervall</code><a class=\"heading-anchor\" href=\"#range\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Avståndstest (inklusive).</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span> <span class=\"nn\">datetime</span>\n\nstart_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>\nend_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\">3</span><span class=\"p\">,</span> <span class=\"mi\">31</span><span class=\"p\">)</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__range<span class=\"o\">=</span><span class=\"p\">(</span>start_date<span class=\"p\">,</span> end_date<span class=\"p\">))</span>\n</code></pre></div>\n<p>SQL-ekvivalent:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> pub_date <span class=\"k\">BETWEEN</span> <span class=\"s1\">&#39;2005-01-01&#39;</span> <span class=\"k\">and</span> <span class=\"s1\">&#39;2005-03-31&#39;</span><span class=\"p\">;</span>\n</code></pre></div>\n<p>Du kan använda <code class=\"docutils literal notranslate\">range</code> överallt där du kan använda <code class=\"docutils literal notranslate\">BETWEEN</code> i SQL - för datum, siffror och till och med tecken.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>Filtrering av en <code class=\"docutils literal notranslate\">DateTimeField</code> med datum kommer inte att inkludera objekt på den sista dagen, eftersom gränserna tolkas som ”0am på det angivna datumet”. Om <code class=\"docutils literal notranslate\">pub_date</code> var en <code class=\"docutils literal notranslate\">DateTimeField</code> skulle ovanstående uttryck omvandlas till denna SQL:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> pub_date <span class=\"k\">BETWEEN</span> <span class=\"s1\">&#39;2005-01-01 00:00:00&#39;</span> <span class=\"k\">and</span> <span class=\"s1\">&#39;2005-03-31 00:00:00&#39;</span><span class=\"p\">;</span>\n</code></pre></div>\n<p>Generellt sett kan du inte blanda datum och datumtider.</p>\n</aside>\n</section>\n<section id=\"date\">\n<span id=\"std-fieldlookup-date\"></span><h4><code class=\"docutils literal notranslate\">datum</code><a class=\"heading-anchor\" href=\"#date\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>För datetime-fält kastas värdet som datum. Tillåter kedjning av ytterligare fältuppslagningar. Tar emot ett datumvärde.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__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>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__date__gt<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</code></pre></div>\n<p>(Inget motsvarande SQL-kodfragment ingår för den här sökningen eftersom implementeringen av den relevanta frågan varierar mellan olika databasmotorer)</p>\n<p>När <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\">USE_TZ</code></a> är <code class=\"docutils literal notranslate\">True</code> konverteras fält till aktuell tidszon före filtrering. Detta kräver <a class=\"reference internal\" href=\"#database-time-zone-definitions\"><span class=\"std std-ref\">tidszonsdefinitioner i databasen</span></a>.</p>\n</section>\n<section id=\"year\">\n<span id=\"std-fieldlookup-year\"></span><h4><code class=\"docutils literal notranslate\">år</code><a class=\"heading-anchor\" href=\"#year\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>För datum- och datetime-fält, en exakt matchning av år. Tillåter kedjning av ytterligare fältuppslagningar. Tar ett heltalsår.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__year<span class=\"o\">=</span><span class=\"mi\">2005</span><span class=\"p\">)</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__year__gte<span class=\"o\">=</span><span class=\"mi\">2005</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>SQL-ekvivalent:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> pub_date <span class=\"k\">BETWEEN</span> <span class=\"s1\">&#39;2005-01-01&#39;</span> <span class=\"k\">AND</span> <span class=\"s1\">&#39;2005-12-31&#39;</span><span class=\"p\">;</span>\n<span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> pub_date <span class=\"o\">&gt;=</span> <span class=\"s1\">&#39;2005-01-01&#39;</span><span class=\"p\">;</span>\n</code></pre></div>\n<p>(Den exakta SQL-syntaxen varierar mellan olika databasmotorer)</p>\n<p>När <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\">USE_TZ</code></a> är <code class=\"docutils literal notranslate\">True</code> konverteras datetime-fält till den aktuella tidszonen före filtrering. Detta kräver <a class=\"reference internal\" href=\"#database-time-zone-definitions\"><span class=\"std std-ref\">tidszonsdefinitioner i databasen</span></a>.</p>\n</section>\n<section id=\"iso-year\">\n<span id=\"std-fieldlookup-iso_year\"></span><h4><code class=\"docutils literal notranslate\">iso_year</code><a class=\"heading-anchor\" href=\"#iso-year\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>För datum- och datetime-fält, en exakt matchning av ISO 8601 veckonummer och år. Tillåter kedjning av ytterligare fältuppslagningar. Tar ett heltalsår.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__iso_year<span class=\"o\">=</span><span class=\"mi\">2005</span><span class=\"p\">)</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__iso_year__gte<span class=\"o\">=</span><span class=\"mi\">2005</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>(Den exakta SQL-syntaxen varierar mellan olika databasmotorer)</p>\n<p>När <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\">USE_TZ</code></a> är <code class=\"docutils literal notranslate\">True</code> konverteras datetime-fält till den aktuella tidszonen före filtrering. Detta kräver <a class=\"reference internal\" href=\"#database-time-zone-definitions\"><span class=\"std std-ref\">tidszonsdefinitioner i databasen</span></a>.</p>\n</section>\n<section id=\"month\">\n<span id=\"std-fieldlookup-month\"></span><h4><code class=\"docutils literal notranslate\">månad</code><a class=\"heading-anchor\" href=\"#month\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>För datum- och datetime-fält, en exakt matchning av månaden. Tillåter kedjning av ytterligare fältuppslagningar. Tar ett heltal från 1 (januari) till 12 (december).</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__month<span class=\"o\">=</span><span class=\"mi\">12</span><span class=\"p\">)</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__month__gte<span class=\"o\">=</span><span class=\"mi\">6</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>SQL-ekvivalent:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> <span class=\"k\">EXTRACT</span><span class=\"p\">(</span><span class=\"s1\">&#39;month&#39;</span> <span class=\"k\">FROM</span> pub_date<span class=\"p\">)</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;12&#39;</span><span class=\"p\">;</span>\n<span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> <span class=\"k\">EXTRACT</span><span class=\"p\">(</span><span class=\"s1\">&#39;month&#39;</span> <span class=\"k\">FROM</span> pub_date<span class=\"p\">)</span> <span class=\"o\">&gt;=</span> <span class=\"s1\">&#39;6&#39;</span><span class=\"p\">;</span>\n</code></pre></div>\n<p>(Den exakta SQL-syntaxen varierar mellan olika databasmotorer)</p>\n<p>När <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\">USE_TZ</code></a> är <code class=\"docutils literal notranslate\">True</code> konverteras datetime-fält till den aktuella tidszonen före filtrering. Detta kräver <a class=\"reference internal\" href=\"#database-time-zone-definitions\"><span class=\"std std-ref\">tidszonsdefinitioner i databasen</span></a>.</p>\n</section>\n<section id=\"day\">\n<span id=\"std-fieldlookup-day\"></span><h4><code class=\"docutils literal notranslate\">dag</code><a class=\"heading-anchor\" href=\"#day\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>För datum- och datetime-fält, en exakt matchning av dagen. Tillåter kedjning av ytterligare fältuppslagningar. Tar en heltalsdag.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__day<span class=\"o\">=</span><span class=\"mi\">3</span><span class=\"p\">)</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__day__gte<span class=\"o\">=</span><span class=\"mi\">3</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>SQL-ekvivalent:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> <span class=\"k\">EXTRACT</span><span class=\"p\">(</span><span class=\"s1\">&#39;day&#39;</span> <span class=\"k\">FROM</span> pub_date<span class=\"p\">)</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;3&#39;</span><span class=\"p\">;</span>\n<span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> <span class=\"k\">EXTRACT</span><span class=\"p\">(</span><span class=\"s1\">&#39;day&#39;</span> <span class=\"k\">FROM</span> pub_date<span class=\"p\">)</span> <span class=\"o\">&gt;=</span> <span class=\"s1\">&#39;3&#39;</span><span class=\"p\">;</span>\n</code></pre></div>\n<p>(Den exakta SQL-syntaxen varierar mellan olika databasmotorer)</p>\n<p>Observera att detta kommer att matcha alla poster med ett pub_date på den tredje dagen i månaden, t.ex. 3 januari, 3 juli etc.</p>\n<p>När <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\">USE_TZ</code></a> är <code class=\"docutils literal notranslate\">True</code> konverteras datetime-fält till den aktuella tidszonen före filtrering. Detta kräver <a class=\"reference internal\" href=\"#database-time-zone-definitions\"><span class=\"std std-ref\">tidszonsdefinitioner i databasen</span></a>.</p>\n</section>\n<section id=\"week\">\n<span id=\"std-fieldlookup-week\"></span><h4><code class=\"docutils literal notranslate\">vecka</code><a class=\"heading-anchor\" href=\"#week\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>För datum- och datetime-fält returneras veckonumret (1-52 eller 53) enligt <a class=\"reference external\" href=\"https://en.wikipedia.org/wiki/ISO-8601\">ISO-8601</a>, dvs. veckorna börjar på en måndag och den första veckan innehåller årets första torsdag.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__week<span class=\"o\">=</span><span class=\"mi\">52</span><span class=\"p\">)</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__week__gte<span class=\"o\">=</span><span class=\"mi\">32</span><span class=\"p\">,</span> pub_date__week__lte<span class=\"o\">=</span><span class=\"mi\">38</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>(Inget motsvarande SQL-kodfragment ingår för den här sökningen eftersom implementeringen av den relevanta frågan varierar mellan olika databasmotorer)</p>\n<p>När <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\">USE_TZ</code></a> är <code class=\"docutils literal notranslate\">True</code> konverteras datetime-fält till den aktuella tidszonen före filtrering. Detta kräver <a class=\"reference internal\" href=\"#database-time-zone-definitions\"><span class=\"std std-ref\">tidszonsdefinitioner i databasen</span></a>.</p>\n</section>\n<section id=\"week-day\">\n<span id=\"std-fieldlookup-week_day\"></span><h4><code class=\"docutils literal notranslate\">veckodag</code><a class=\"heading-anchor\" href=\"#week-day\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>För datum- och datetime-fält, en matchning av ”veckodag”. Tillåter kedjning av ytterligare fältuppslagningar.</p>\n<p>Tar ett heltalsvärde som representerar veckodagen från 1 (söndag) till 7 (lördag).</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__week_day<span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__week_day__gte<span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>(Inget motsvarande SQL-kodfragment ingår för den här sökningen eftersom implementeringen av den relevanta frågan varierar mellan olika databasmotorer)</p>\n<p>Observera att detta kommer att matcha alla poster med ett <code class=\"docutils literal notranslate\">pub_date</code> som infaller på en måndag (dag 2 i veckan), oavsett vilken månad eller vilket år det inträffar. Veckodagar är indexerade så att dag 1 är söndag och dag 7 är lördag.</p>\n<p>När <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\">USE_TZ</code></a> är <code class=\"docutils literal notranslate\">True</code> konverteras datetime-fält till den aktuella tidszonen före filtrering. Detta kräver <a class=\"reference internal\" href=\"#database-time-zone-definitions\"><span class=\"std std-ref\">tidszonsdefinitioner i databasen</span></a>.</p>\n</section>\n<section id=\"iso-week-day\">\n<span id=\"std-fieldlookup-iso_week_day\"></span><h4><code class=\"docutils literal notranslate\">iso_week_day</code><a class=\"heading-anchor\" href=\"#iso-week-day\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>För datum- och datetime-fält, en exakt matchning av veckodag enligt ISO 8601. Tillåter kedjning av ytterligare fältuppslagningar.</p>\n<p>Tar ett heltalsvärde som representerar veckodagen från 1 (måndag) till 7 (söndag).</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__iso_week_day<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__iso_week_day__gte<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>(Inget motsvarande SQL-kodfragment ingår för den här sökningen eftersom implementeringen av den relevanta frågan varierar mellan olika databasmotorer)</p>\n<p>Observera att detta kommer att matcha alla poster med ett <code class=\"docutils literal notranslate\">pub_date</code> som infaller på en måndag (dag 1 i veckan), oavsett vilken månad eller vilket år det inträffar. Veckodagar är indexerade så att dag 1 är måndag och dag 7 är söndag.</p>\n<p>När <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\">USE_TZ</code></a> är <code class=\"docutils literal notranslate\">True</code> konverteras datetime-fält till den aktuella tidszonen före filtrering. Detta kräver <a class=\"reference internal\" href=\"#database-time-zone-definitions\"><span class=\"std std-ref\">tidszonsdefinitioner i databasen</span></a>.</p>\n</section>\n<section id=\"quarter\">\n<span id=\"std-fieldlookup-quarter\"></span><h4><code class=\"docutils literal notranslate\">kvartal</code><a class=\"heading-anchor\" href=\"#quarter\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>För datum- och datetime-fält, en matchning av ”kvartal i året”. Tillåter kedjning av ytterligare fältuppslagningar. Tar ett heltalsvärde mellan 1 och 4 som representerar kvartalet i året.</p>\n<p>Exempel för att hämta poster under andra kvartalet (1 april till 30 juni):</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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__quarter<span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>(Inget motsvarande SQL-kodfragment ingår för den här sökningen eftersom implementeringen av den relevanta frågan varierar mellan olika databasmotorer)</p>\n<p>När <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\">USE_TZ</code></a> är <code class=\"docutils literal notranslate\">True</code> konverteras datetime-fält till den aktuella tidszonen före filtrering. Detta kräver <a class=\"reference internal\" href=\"#database-time-zone-definitions\"><span class=\"std std-ref\">tidszonsdefinitioner i databasen</span></a>.</p>\n</section>\n<section id=\"time\">\n<span id=\"std-fieldlookup-time\"></span><h4><code class=\"docutils literal notranslate\">tid</code><a class=\"heading-anchor\" href=\"#time\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>För datetime-fält kastas värdet som tid. Tillåter kedjning av ytterligare fältuppslagningar. Tar emot ett värde av <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.time\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">datetime.time</code></a>.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__time<span class=\"o\">=</span>datetime<span class=\"o\">.</span>time<span class=\"p\">(</span><span class=\"mi\">14</span><span class=\"p\">,</span> <span class=\"mi\">30</span><span class=\"p\">))</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__time__range<span class=\"o\">=</span><span class=\"p\">(</span>datetime<span class=\"o\">.</span>time<span class=\"p\">(</span><span class=\"mi\">8</span><span class=\"p\">),</span> datetime<span class=\"o\">.</span>time<span class=\"p\">(</span><span class=\"mi\">17</span><span class=\"p\">)))</span>\n</code></pre></div>\n<p>(Inget motsvarande SQL-kodfragment ingår för den här sökningen eftersom implementeringen av den relevanta frågan varierar mellan olika databasmotorer)</p>\n<p>När <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\">USE_TZ</code></a> är <code class=\"docutils literal notranslate\">True</code> konverteras fält till aktuell tidszon före filtrering. Detta kräver <a class=\"reference internal\" href=\"#database-time-zone-definitions\"><span class=\"std std-ref\">tidszonsdefinitioner i databasen</span></a>.</p>\n</section>\n<section id=\"hour\">\n<span id=\"std-fieldlookup-hour\"></span><h4><code class=\"docutils literal notranslate\">timme</code><a class=\"heading-anchor\" href=\"#hour\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>För datetime- och time-fält, en exakt matchning av timmar. Tillåter kedjning av ytterligare fältuppslagningar. Tar ett heltal mellan 0 och 23.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Event<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>timestamp__hour<span class=\"o\">=</span><span class=\"mi\">23</span><span class=\"p\">)</span>\nEvent<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>time__hour<span class=\"o\">=</span><span class=\"mi\">5</span><span class=\"p\">)</span>\nEvent<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>timestamp__hour__gte<span class=\"o\">=</span><span class=\"mi\">12</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>SQL-ekvivalent:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> <span class=\"k\">EXTRACT</span><span class=\"p\">(</span><span class=\"s1\">&#39;hour&#39;</span> <span class=\"k\">FROM</span> <span class=\"k\">timestamp</span><span class=\"p\">)</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;23&#39;</span><span class=\"p\">;</span>\n<span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> <span class=\"k\">EXTRACT</span><span class=\"p\">(</span><span class=\"s1\">&#39;hour&#39;</span> <span class=\"k\">FROM</span> <span class=\"k\">time</span><span class=\"p\">)</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;5&#39;</span><span class=\"p\">;</span>\n<span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> <span class=\"k\">EXTRACT</span><span class=\"p\">(</span><span class=\"s1\">&#39;hour&#39;</span> <span class=\"k\">FROM</span> <span class=\"k\">timestamp</span><span class=\"p\">)</span> <span class=\"o\">&gt;=</span> <span class=\"s1\">&#39;12&#39;</span><span class=\"p\">;</span>\n</code></pre></div>\n<p>(Den exakta SQL-syntaxen varierar mellan olika databasmotorer)</p>\n<p>När <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\">USE_TZ</code></a> är <code class=\"docutils literal notranslate\">True</code> konverteras datetime-fält till den aktuella tidszonen före filtrering. Detta kräver <a class=\"reference internal\" href=\"#database-time-zone-definitions\"><span class=\"std std-ref\">tidszonsdefinitioner i databasen</span></a>.</p>\n</section>\n<section id=\"minute\">\n<span id=\"std-fieldlookup-minute\"></span><h4><code class=\"docutils literal notranslate\">minut</code><a class=\"heading-anchor\" href=\"#minute\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>För datetime- och time-fält, en exakt minutmatchning. Tillåter kedjning av ytterligare fältuppslagningar. Tar ett heltal mellan 0 och 59.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Event<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>timestamp__minute<span class=\"o\">=</span><span class=\"mi\">29</span><span class=\"p\">)</span>\nEvent<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>time__minute<span class=\"o\">=</span><span class=\"mi\">46</span><span class=\"p\">)</span>\nEvent<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>timestamp__minute__gte<span class=\"o\">=</span><span class=\"mi\">29</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>SQL-ekvivalent:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> <span class=\"k\">EXTRACT</span><span class=\"p\">(</span><span class=\"s1\">&#39;minute&#39;</span> <span class=\"k\">FROM</span> <span class=\"k\">timestamp</span><span class=\"p\">)</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;29&#39;</span><span class=\"p\">;</span>\n<span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> <span class=\"k\">EXTRACT</span><span class=\"p\">(</span><span class=\"s1\">&#39;minute&#39;</span> <span class=\"k\">FROM</span> <span class=\"k\">time</span><span class=\"p\">)</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;46&#39;</span><span class=\"p\">;</span>\n<span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> <span class=\"k\">EXTRACT</span><span class=\"p\">(</span><span class=\"s1\">&#39;minute&#39;</span> <span class=\"k\">FROM</span> <span class=\"k\">timestamp</span><span class=\"p\">)</span> <span class=\"o\">&gt;=</span> <span class=\"s1\">&#39;29&#39;</span><span class=\"p\">;</span>\n</code></pre></div>\n<p>(Den exakta SQL-syntaxen varierar mellan olika databasmotorer)</p>\n<p>När <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\">USE_TZ</code></a> är <code class=\"docutils literal notranslate\">True</code> konverteras datetime-fält till den aktuella tidszonen före filtrering. Detta kräver <a class=\"reference internal\" href=\"#database-time-zone-definitions\"><span class=\"std std-ref\">tidszonsdefinitioner i databasen</span></a>.</p>\n</section>\n<section id=\"second\">\n<span id=\"std-fieldlookup-second\"></span><h4><code class=\"docutils literal notranslate\">sekund</code><a class=\"heading-anchor\" href=\"#second\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>För datetime- och time-fält, en exakt andra matchning. Tillåter kedjning av ytterligare fältuppslagningar. Tar ett heltal mellan 0 och 59.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Event<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>timestamp__second<span class=\"o\">=</span><span class=\"mi\">31</span><span class=\"p\">)</span>\nEvent<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>time__second<span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\nEvent<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>timestamp__second__gte<span class=\"o\">=</span><span class=\"mi\">31</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>SQL-ekvivalent:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> <span class=\"k\">EXTRACT</span><span class=\"p\">(</span><span class=\"s1\">&#39;second&#39;</span> <span class=\"k\">FROM</span> <span class=\"k\">timestamp</span><span class=\"p\">)</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;31&#39;</span><span class=\"p\">;</span>\n<span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> <span class=\"k\">EXTRACT</span><span class=\"p\">(</span><span class=\"s1\">&#39;second&#39;</span> <span class=\"k\">FROM</span> <span class=\"k\">time</span><span class=\"p\">)</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;2&#39;</span><span class=\"p\">;</span>\n<span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> <span class=\"k\">EXTRACT</span><span class=\"p\">(</span><span class=\"s1\">&#39;second&#39;</span> <span class=\"k\">FROM</span> <span class=\"k\">timestamp</span><span class=\"p\">)</span> <span class=\"o\">&gt;=</span> <span class=\"s1\">&#39;31&#39;</span><span class=\"p\">;</span>\n</code></pre></div>\n<p>(Den exakta SQL-syntaxen varierar mellan olika databasmotorer)</p>\n<p>När <a class=\"reference internal\" href=\"/sv/6.1/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\">USE_TZ</code></a> är <code class=\"docutils literal notranslate\">True</code> konverteras datetime-fält till den aktuella tidszonen före filtrering. Detta kräver <a class=\"reference internal\" href=\"#database-time-zone-definitions\"><span class=\"std std-ref\">tidszonsdefinitioner i databasen</span></a>.</p>\n</section>\n<section id=\"isnull\">\n<span id=\"std-fieldlookup-isnull\"></span><h4><code class=\"docutils literal notranslate\">isnull</code><a class=\"heading-anchor\" href=\"#isnull\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Tar antingen <code class=\"docutils literal notranslate\">True</code> eller <code class=\"docutils literal notranslate\">False</code>, vilket motsvarar SQL-frågorna <code class=\"docutils literal notranslate\">IS NULL</code> respektive <code class=\"docutils literal notranslate\">IS NOT NULL</code>.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__isnull<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>SQL-ekvivalent:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> pub_date <span class=\"k\">IS</span> <span class=\"k\">NULL</span><span class=\"p\">;</span>\n</code></pre></div>\n</section>\n<section id=\"regex\">\n<span id=\"std-fieldlookup-regex\"></span><h4><code class=\"docutils literal notranslate\">regex</code><a class=\"heading-anchor\" href=\"#regex\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Skiftlägeskänslig matchning med reguljärt uttryck.</p>\n<p>Syntaxen för reguljära uttryck är den som används i databasens backend. När det gäller SQLite, som inte har något inbyggt stöd för reguljära uttryck, tillhandahålls denna funktion av en (Python) användardefinierad REGEXP-funktion, och syntaxen för reguljära uttryck är därför den som används i Pythons modul <code class=\"docutils literal notranslate\">re</code>.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>title__regex<span class=\"o\">=</span><span class=\"sa\">r</span><span class=\"s2\">&quot;^(An?|The) +&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>SQL-ekvivalenter:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> title REGEXP <span class=\"nb\">BINARY</span> <span class=\"s1\">&#39;^(An?|The) +&#39;</span><span class=\"p\">;</span> <span class=\"c1\">-- MySQL</span>\n\n<span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> REGEXP_LIKE<span class=\"p\">(</span>title<span class=\"p\">,</span> <span class=\"s1\">&#39;^(An?|The) +&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;c&#39;</span><span class=\"p\">);</span> <span class=\"c1\">-- Oracle</span>\n\n<span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> title <span class=\"o\">~</span> <span class=\"s1\">&#39;^(An?|The) +&#39;</span><span class=\"p\">;</span> <span class=\"c1\">-- PostgreSQL</span>\n\n<span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> title REGEXP <span class=\"s1\">&#39;^(An?|The) +&#39;</span><span class=\"p\">;</span> <span class=\"c1\">-- SQLite</span>\n</code></pre></div>\n<p>Det rekommenderas att använda råa strängar (t.ex. <code class=\"docutils literal notranslate\">r'foo'</code> i stället för <code class=\"docutils literal notranslate\">'foo'</code>) för att skicka in syntaxen för reguljära uttryck.</p>\n</section>\n<section id=\"iregex\">\n<span id=\"std-fieldlookup-iregex\"></span><h4><code class=\"docutils literal notranslate\">iregex</code><a class=\"heading-anchor\" href=\"#iregex\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Matchning av reguljära uttryck utan skiftlägeskänslighet.</p>\n<p>Exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>title__iregex<span class=\"o\">=</span><span class=\"sa\">r</span><span class=\"s2\">&quot;^(an?|the) +&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>SQL-ekvivalenter:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> title REGEXP <span class=\"s1\">&#39;^(an?|the) +&#39;</span><span class=\"p\">;</span> <span class=\"c1\">-- MySQL</span>\n\n<span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> REGEXP_LIKE<span class=\"p\">(</span>title<span class=\"p\">,</span> <span class=\"s1\">&#39;^(an?|the) +&#39;</span><span class=\"p\">,</span> <span class=\"s1\">&#39;i&#39;</span><span class=\"p\">);</span> <span class=\"c1\">-- Oracle</span>\n\n<span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> title <span class=\"o\">~*</span> <span class=\"s1\">&#39;^(an?|the) +&#39;</span><span class=\"p\">;</span> <span class=\"c1\">-- PostgreSQL</span>\n\n<span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> title REGEXP <span class=\"s1\">&#39;(?i)^(an?|the) +&#39;</span><span class=\"p\">;</span> <span class=\"c1\">-- SQLite</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"aggregation-functions\">\n<span id=\"id6\"></span><h3>Aggregeringsfunktioner<a class=\"heading-anchor\" href=\"#aggregation-functions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Django tillhandahåller följande aggregeringsfunktioner i modulen <code class=\"docutils literal notranslate\">django.db.models</code>. För detaljer om hur du använder dessa aggregeringsfunktioner, se <a class=\"reference internal\" href=\"/sv/6.1/topics/db/aggregation/\"><span class=\"doc\">ämnesguiden om aggregering</span></a>. Se <a class=\"reference internal\" href=\"/sv/6.1/ref/models/expressions/#django.db.models.Aggregate\" title=\"django.db.models.Aggregate\"><code class=\"xref py py-class docutils literal notranslate\">Aggregate</code></a>-dokumentationen för att lära dig hur du skapar dina aggregat.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>SQLite kan inte hantera aggregering på datum/tid-fält direkt från start. Detta beror på att det inte finns några inbyggda datum/tid-fält i SQLite och Django emulerar för närvarande dessa funktioner med hjälp av ett textfält. Försök att använda aggregering på datum/tid-fält i SQLite kommer att ge upphov till <code class=\"docutils literal notranslate\">NotSupportedError</code>.</p>\n</aside>\n<aside class=\"admonition-empty-querysets-or-groups admonition\" role=\"note\">\n<p class=\"admonition-title\">Tomma querysets eller grupper</p>\n<p>Aggregeringsfunktioner returnerar <code class=\"docutils literal notranslate\">None</code> när de används med ett tomt <code class=\"docutils literal notranslate\">QuerySet</code> eller en tom grupp. Aggregeringsfunktionen <code class=\"docutils literal notranslate\">Sum</code> returnerar t.ex. <code class=\"docutils literal notranslate\">None</code> istället för <code class=\"docutils literal notranslate\">0</code> om <code class=\"docutils literal notranslate\">QuerySet</code> inte innehåller några poster eller för en tom grupp i ett icke-tomt <code class=\"docutils literal notranslate\">QuerySet</code>. För att returnera ett annat värde istället, definiera argumentet <code class=\"docutils literal notranslate\">default</code>. <code class=\"docutils literal notranslate\">Count</code> är ett undantag från detta beteende; det returnerar <code class=\"docutils literal notranslate\">0</code> om <code class=\"docutils literal notranslate\">QuerySet</code> är tomt eftersom <code class=\"docutils literal notranslate\">Count</code> inte stöder <code class=\"docutils literal notranslate\">default</code> argumentet.</p>\n</aside>\n<p>Alla aggregat har följande parametrar gemensamt:</p>\n<section id=\"expressions\">\n<h4><code class=\"docutils literal notranslate\">uttryck</code><a class=\"heading-anchor\" href=\"#expressions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Strängar som refererar till fält i modellen, transformationer av fältet eller <a class=\"reference internal\" href=\"/sv/6.1/ref/models/expressions/\"><span class=\"doc\">frågeuttryck</span></a>.</p>\n</section>\n<section id=\"output-field\">\n<h4><code class=\"docutils literal notranslate\">utgångsfält</code><a class=\"heading-anchor\" href=\"#output-field\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Ett valfritt argument som representerar <a class=\"reference internal\" href=\"/sv/6.1/ref/models/fields/\"><span class=\"doc\">modellfältet</span></a> i returvärdet</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>När du kombinerar flera fälttyper kan Django bara bestämma <code class=\"docutils literal notranslate\">output_field</code> om alla fält är av samma typ. I annat fall måste du själv tillhandahålla <code class=\"docutils literal notranslate\">output_field</code>.</p>\n</aside>\n</section>\n<section id=\"aggregate-filter\">\n<span id=\"id7\"></span><h4><code class=\"docutils literal notranslate\">filter</code><a class=\"heading-anchor\" href=\"#aggregate-filter\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Ett valfritt <a class=\"reference internal\" href=\"#q-objects\"><span class=\"std std-ref\">Q-objekt</span></a> som används för att filtrera de rader som aggregeras.</p>\n<p>Se <a class=\"reference internal\" href=\"/sv/6.1/ref/models/conditional-expressions/#conditional-aggregation\"><span class=\"std std-ref\">Villkorlig aggregering</span></a> och <a class=\"reference internal\" href=\"/sv/6.1/topics/db/aggregation/#filtering-on-annotations\"><span class=\"std std-ref\">Filtrering av anteckningar</span></a> för exempel på användning.</p>\n</section>\n<section id=\"default\">\n<span id=\"aggregate-default\"></span><h4><code class=\"docutils literal notranslate\">standard</code><a class=\"heading-anchor\" href=\"#default\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Ett valfritt argument som gör det möjligt att ange ett värde som ska användas som standardvärde när frågeuppsättningen (eller grupperingen) inte innehåller några poster.</p>\n</section>\n<section id=\"id8\">\n<h4><code class=\"docutils literal notranslate\">**extra</code><a class=\"heading-anchor\" href=\"#id8\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Nyckelord som kan ge extra kontext för den SQL som genereras av aggregatet.</p>\n</section>\n<section id=\"anyvalue\">\n<h4><code class=\"docutils literal notranslate\">AnyValue</code><a class=\"heading-anchor\" href=\"#anyvalue\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<aside class=\"version-note version-added\" data-version=\"6.0\" role=\"note\">\n<p class=\"version-note-title\">New in Django 6.0</p></aside>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.AnyValue\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">AnyValue</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">output_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">filter<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">default<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.AnyValue\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returnerar ett godtyckligt värde från indatavärden som inte är null.</p>\n<ul class=\"simple\">\n<li><p>Standardalias: <code class=\"docutils literal notranslate\">&lt;field&gt;__anyvalue</code></p></li>\n<li><p>Typ av retur: samma som input-fältet, eller <code class=\"docutils literal notranslate\">output_field</code> om det anges. Om queryset eller grupperingen är tom returneras <code class=\"docutils literal notranslate\">default</code>.</p></li>\n</ul>\n<p>Exempel på användning:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get average rating for each year along with a sample headline</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># from that year.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> AnyValue<span class=\"p\">,</span> Avg<span class=\"p\">,</span> F<span class=\"p\">,</span> Q\n<span class=\"gp\">&gt;&gt;&gt; </span>sample_headline <span class=\"o\">=</span> AnyValue<span class=\"p\">(</span><span class=\"s2\">&quot;headline&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>values<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    pub_year<span class=\"o\">=</span>F<span class=\"p\">(</span><span class=\"s2\">&quot;pub_date__year&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    avg_rating<span class=\"o\">=</span>Avg<span class=\"p\">(</span><span class=\"s2\">&quot;rating&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    sample_headline<span class=\"o\">=</span>sample_headline<span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get a sample headline from each year with rating greater than 4.5.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>sample_headline <span class=\"o\">=</span> AnyValue<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;headline&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"nb\">filter</span><span class=\"o\">=</span>Q<span class=\"p\">(</span>rating__gt<span class=\"o\">=</span><span class=\"mf\">4.5</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>values<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    pub_year<span class=\"o\">=</span>F<span class=\"p\">(</span><span class=\"s2\">&quot;pub_date__year&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    avg_rating<span class=\"o\">=</span>Avg<span class=\"p\">(</span><span class=\"s2\">&quot;rating&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    sample_headline<span class=\"o\">=</span>sample_headline<span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Stöds i SQLite, MySQL, Oracle och PostgreSQL 16+.</p>\n<aside class=\"admonition-mysql-with-only-full-group-by-enabled admonition\" role=\"note\">\n<p class=\"admonition-title\">MySQL med <code class=\"docutils literal notranslate\">ONLY_FULL_GROUP_BY</code> aktiverat</p>\n<p>När SQL-läget <code class=\"docutils literal notranslate\">ONLY_FULL_GROUP_BY</code> är aktiverat i MySQL kan det vara nödvändigt att använda <code class=\"docutils literal notranslate\">AnyValue</code> om en aggregering innehåller en blandning av aggregerade och icke-aggregerade funktioner. Genom att använda <code class=\"docutils literal notranslate\">AnyValue</code> kan den icke-aggregerade funktionen refereras i urvalslistan när databasen inte kan avgöra att den är funktionellt beroende av kolumnerna i <a class=\"reference external\" href=\"https://dev.mysql.com/doc/refman/8.4/en/group-by-handling.html\">group by</a>-satsen. Mer information finns i <a class=\"reference internal\" href=\"/sv/6.1/topics/db/aggregation/#aggregation-mysql-only-full-group-by\"><span class=\"std std-ref\">dokumentationen om aggregering</span></a>.</p>\n</aside>\n</dd></dl>\n\n</section>\n<section id=\"avg\">\n<h4><code class=\"docutils literal notranslate\">Avg</code><a class=\"heading-anchor\" href=\"#avg\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Avg\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Avg</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">output_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">distinct<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">filter<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">default<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Avg\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returnerar medelvärdet av det angivna uttrycket, som måste vara numeriskt om du inte anger ett annat <code class=\"docutils literal notranslate\">output_field</code>.</p>\n<ul class=\"simple\">\n<li><p>Standardalias: <code class=\"docutils literal notranslate\">&lt;field&gt;__avg</code></p></li>\n<li><p>Typ av retur: <code class=\"docutils literal notranslate\">float</code> om indata är <code class=\"docutils literal notranslate\">int</code>, annars samma som indatafältet, eller <code class=\"docutils literal notranslate\">output_field</code> om det anges. Om queryset eller grupperingen är tom returneras <code class=\"docutils literal notranslate\">default</code>.</p></li>\n</ul>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Avg.distinct\">\n<span class=\"sig-name descname\">distinct</span><a class=\"heading-anchor\" href=\"#django.db.models.Avg.distinct\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Valfritt. Om <code class=\"docutils literal notranslate\">distinct=True</code> returnerar <code class=\"docutils literal notranslate\">Avg</code> medelvärdet av unika värden. Detta är SQL-ekvivalenten till <code class=\"docutils literal notranslate\">AVG(DISTINCT &lt;field&gt;)</code>. Standardvärdet är <code class=\"docutils literal notranslate\">False</code>.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"bitand\">\n<h4><code class=\"docutils literal notranslate\">Bit och</code><a class=\"heading-anchor\" href=\"#bitand\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.BitAnd\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">BitAnd</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">filter<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">default<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.BitAnd\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"6.1\" role=\"note\">\n<p class=\"version-note-title\">New in Django 6.1</p></aside>\n<p>Returnerar ett <code class=\"docutils literal notranslate\">int</code> av bitvis <code class=\"docutils literal notranslate\">AND</code> av alla icke-null värden, eller <code class=\"docutils literal notranslate\">default</code> om alla värden är null.</p>\n<p>Parametern <code class=\"docutils literal notranslate\">default</code> stöds inte i MariaDB, MySQL och Oracle.</p>\n</dd></dl>\n\n</section>\n<section id=\"bitor\">\n<h4><code class=\"docutils literal notranslate\">BitOr</code><a class=\"heading-anchor\" href=\"#bitor\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.BitOr\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">BitOr</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">filter<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">default<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.BitOr\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"6.1\" role=\"note\">\n<p class=\"version-note-title\">New in Django 6.1</p></aside>\n<p>Returnerar ett <code class=\"docutils literal notranslate\">int</code> av det bitvisa <code class=\"docutils literal notranslate\">OR</code> av alla icke-null indatavärden, eller <code class=\"docutils literal notranslate\">default</code> om alla värden är null.</p>\n<p>Parametern <code class=\"docutils literal notranslate\">default</code> stöds inte i MariaDB, MySQL och Oracle.</p>\n</dd></dl>\n\n</section>\n<section id=\"bitxor\">\n<h4><code class=\"docutils literal notranslate\">BitXor</code><a class=\"heading-anchor\" href=\"#bitxor\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.BitXor\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">BitXor</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">filter<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">default<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.BitXor\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"version-note version-added\" data-version=\"6.1\" role=\"note\">\n<p class=\"version-note-title\">New in Django 6.1</p></aside>\n<p>Returnerar ett <code class=\"docutils literal notranslate\">int</code> med bitvis <code class=\"docutils literal notranslate\">XOR</code> för alla indata som inte är null, eller <code class=\"docutils literal notranslate\">default</code> om alla värden är null.</p>\n<p>Parametern <code class=\"docutils literal notranslate\">default</code> stöds inte i MariaDB, MySQL och Oracle.</p>\n</dd></dl>\n\n</section>\n<section id=\"id9\">\n<h4><code class=\"docutils literal notranslate\">Count</code><a class=\"heading-anchor\" href=\"#id9\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Count\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Count</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">distinct<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">filter<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Count\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returnerar antalet objekt som är relaterade med hjälp av det angivna uttrycket. <code class=\"docutils literal notranslate\">Count('*')</code> är likvärdigt med SQL-uttrycket <code class=\"docutils literal notranslate\">COUNT(*)</code>.</p>\n<ul class=\"simple\">\n<li><p>Standardalias: <code class=\"docutils literal notranslate\">&lt;field&gt;__count</code></p></li>\n<li><p>Typ av retur: <code class=\"docutils literal notranslate\">int</code></p></li>\n</ul>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Count.distinct\">\n<span class=\"sig-name descname\">distinct</span><a class=\"heading-anchor\" href=\"#django.db.models.Count.distinct\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Valfritt. Om <code class=\"docutils literal notranslate\">distinct=True</code>, kommer räkningen endast att omfatta unika instanser. Detta är SQL-ekvivalenten till <code class=\"docutils literal notranslate\">COUNT(DISTINCT &lt;field&gt;)</code>. Standardvärdet är <code class=\"docutils literal notranslate\">False</code>.</p>\n</dd></dl>\n\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Argumentet <code class=\"docutils literal notranslate\">default</code> stöds inte.</p>\n</aside>\n</dd></dl>\n\n</section>\n<section id=\"max\">\n<h4><code class=\"docutils literal notranslate\">Max</code><a class=\"heading-anchor\" href=\"#max\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Max\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Max</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">output_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">filter<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">default<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Max\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returnerar det maximala värdet för det angivna uttrycket.</p>\n<ul class=\"simple\">\n<li><p>Standardalias: <code class=\"docutils literal notranslate\">&lt;field&gt;__max</code></p></li>\n<li><p>Typ av retur: samma som input-fältet, eller <code class=\"docutils literal notranslate\">output_field</code> om det anges. Om queryset eller grupperingen är tom returneras <code class=\"docutils literal notranslate\">default</code>.</p></li>\n</ul>\n</dd></dl>\n\n</section>\n<section id=\"min\">\n<h4><code class=\"docutils literal notranslate\">Min</code><a class=\"heading-anchor\" href=\"#min\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Min\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Min</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">output_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">filter<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">default<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Min\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returnerar det lägsta värdet för det angivna uttrycket.</p>\n<ul class=\"simple\">\n<li><p>Standardalias: <code class=\"docutils literal notranslate\">&lt;field&gt;__min</code></p></li>\n<li><p>Typ av retur: samma som input-fältet, eller <code class=\"docutils literal notranslate\">output_field</code> om det anges. Om queryset eller grupperingen är tom returneras <code class=\"docutils literal notranslate\">default</code>.</p></li>\n</ul>\n</dd></dl>\n\n</section>\n<section id=\"stddev\">\n<h4><code class=\"docutils literal notranslate\">StdDev</code><a class=\"heading-anchor\" href=\"#stddev\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.StdDev\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">StdDev</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">output_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">sample<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">filter<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">default<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.StdDev\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returnerar standardavvikelsen för data i det angivna uttrycket.</p>\n<ul class=\"simple\">\n<li><p>Standardalias: <code class=\"docutils literal notranslate\">&lt;field&gt;__stddev</code></p></li>\n<li><p>Typ av retur: <code class=\"docutils literal notranslate\">float</code> om indata är <code class=\"docutils literal notranslate\">int</code>, annars samma som indatafältet, eller <code class=\"docutils literal notranslate\">output_field</code> om det anges. Om queryset eller grupperingen är tom returneras <code class=\"docutils literal notranslate\">default</code>.</p></li>\n</ul>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.StdDev.sample\">\n<span class=\"sig-name descname\">sample</span><a class=\"heading-anchor\" href=\"#django.db.models.StdDev.sample\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Valfritt. Som standard returnerar <code class=\"docutils literal notranslate\">StdDev</code> populationens standardavvikelse. Men om <code class=\"docutils literal notranslate\">sample=True</code>, kommer returvärdet att vara standardavvikelsen för urvalet.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"sum\">\n<h4><code class=\"docutils literal notranslate\">Summa</code><a class=\"heading-anchor\" href=\"#sum\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Sum\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Sum</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">output_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">distinct<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">filter<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">default<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Sum\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Beräknar summan av alla värden för det angivna uttrycket.</p>\n<ul class=\"simple\">\n<li><p>Standardalias: <code class=\"docutils literal notranslate\">&lt;field&gt;__sum</code></p></li>\n<li><p>Typ av retur: samma som input-fältet, eller <code class=\"docutils literal notranslate\">output_field</code> om det anges. Om queryset eller grupperingen är tom returneras <code class=\"docutils literal notranslate\">default</code>.</p></li>\n</ul>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Sum.distinct\">\n<span class=\"sig-name descname\">distinct</span><a class=\"heading-anchor\" href=\"#django.db.models.Sum.distinct\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Valfritt. Om <code class=\"docutils literal notranslate\">distinct=True</code> returnerar <code class=\"docutils literal notranslate\">Sum</code> summan av unika värden. Detta är SQL-ekvivalenten till <code class=\"docutils literal notranslate\">SUM(DISTINCT &lt;field&gt;)</code>. Standardvärdet är <code class=\"docutils literal notranslate\">False</code>.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"variance\">\n<h4><code class=\"docutils literal notranslate\">Varians</code><a class=\"heading-anchor\" href=\"#variance\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Variance\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Variance</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">output_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">sample<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">filter<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">default<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Variance\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returnerar variansen för data i det angivna uttrycket.</p>\n<ul class=\"simple\">\n<li><p>Standardalias: <code class=\"docutils literal notranslate\">&lt;field&gt;__variance</code></p></li>\n<li><p>Typ av retur: <code class=\"docutils literal notranslate\">float</code> om indata är <code class=\"docutils literal notranslate\">int</code>, annars samma som indatafältet, eller <code class=\"docutils literal notranslate\">output_field</code> om det anges. Om queryset eller grupperingen är tom returneras <code class=\"docutils literal notranslate\">default</code>.</p></li>\n</ul>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Variance.sample\">\n<span class=\"sig-name descname\">sample</span><a class=\"heading-anchor\" href=\"#django.db.models.Variance.sample\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Valfritt. Som standard returnerar <code class=\"docutils literal notranslate\">Variance</code> populationsvariansen. Men om <code class=\"docutils literal notranslate\">sample=True</code> kommer returvärdet att vara urvalsvariansen.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"stringagg\">\n<h4><code class=\"docutils literal notranslate\">StringAgg</code><a class=\"heading-anchor\" href=\"#stringagg\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<aside class=\"version-note version-added\" data-version=\"6.0\" role=\"note\">\n<p class=\"version-note-title\">New in Django 6.0</p></aside>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.StringAgg\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">StringAgg</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">delimiter</em>, <em class=\"sig-param\">output_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">distinct<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">filter<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">order_by<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">default<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.StringAgg\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returnerar indatavärdena sammankopplade till en sträng, åtskilda av strängen <code class=\"docutils literal notranslate\">delimiter</code> eller <code class=\"docutils literal notranslate\">default</code> om det inte finns några värden.</p>\n<ul class=\"simple\">\n<li><p>Standardalias: <code class=\"docutils literal notranslate\">&lt;field&gt;__stringagg</code></p></li>\n<li><p>Returtyp: <code class=\"docutils literal notranslate\">string</code> eller <code class=\"docutils literal notranslate\">output_field</code> om den anges. Om frågeuppsättningen eller grupperingen är tom returneras <code class=\"docutils literal notranslate\">default</code>.</p></li>\n</ul>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.StringAgg.delimiter\">\n<span class=\"sig-name descname\">delimiter</span><a class=\"heading-anchor\" href=\"#django.db.models.StringAgg.delimiter\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ett <code class=\"docutils literal notranslate\">Value</code> eller uttryck som representerar strängen som ska separera vart och ett av värdena. Till exempel <code class=\"docutils literal notranslate\">Value(&quot;,&quot;)</code>. (I SQLite är avgränsaren <code class=\"docutils literal notranslate\">Value(&quot;,&quot;)</code> den enda som är kompatibel med <code class=\"docutils literal notranslate\">distinct=True</code>.)</p>\n<aside class=\"version-note version-changed\" data-version=\"6.1\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 6.1</p><p>Stöd för att använda <code class=\"docutils literal notranslate\">distinct=True</code> med avgränsaren <code class=\"docutils literal notranslate\">Value(&quot;,&quot;)</code> i SQLite lades till.</p>\n</aside>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n</section>\n</section>\n<section id=\"query-related-tools\">\n<h2>Frågerelaterade verktyg<a class=\"heading-anchor\" href=\"#query-related-tools\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Detta avsnitt innehåller referensmaterial för frågerelaterade verktyg som inte finns dokumenterade någon annanstans.</p>\n<section id=\"q-objects\">\n<span id=\"id10\"></span><h3>objekt av typen <code class=\"docutils literal notranslate\">Q()</code><a class=\"heading-anchor\" href=\"#q-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Q\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Q</span><a class=\"heading-anchor\" href=\"#django.db.models.Q\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Ett <code class=\"docutils literal notranslate\">Q()</code>-objekt representerar ett SQL-villkor som kan användas i databasrelaterade operationer. Det liknar hur ett <a class=\"reference internal\" href=\"/sv/6.1/ref/models/expressions/#django.db.models.F\" title=\"django.db.models.F\"><code class=\"xref py py-class docutils literal notranslate\">F()</code></a>-objekt representerar värdet på ett modellfält eller en annotering. De gör det möjligt att definiera och återanvända villkor. Dessa kan negeras med hjälp av operatorn <code class=\"docutils literal notranslate\">~</code> (<code class=\"docutils literal notranslate\">NOT</code>) och kombineras med hjälp av operatorer som <code class=\"docutils literal notranslate\">|</code> (<code class=\"docutils literal notranslate\">OR</code>), <code class=\"docutils literal notranslate\">&amp;</code> (<code class=\"docutils literal notranslate\">AND</code>) och <code class=\"docutils literal notranslate\">^</code> (<code class=\"docutils literal notranslate\">XOR</code>). Se <span class=\"xref std std-ref\">komplexa-uppslagningar-med-q</span>.</p>\n</section>\n<section id=\"prefetch-objects\">\n<h3><code class=\"docutils literal notranslate\">Prefetch()</code>-objekt<a class=\"heading-anchor\" href=\"#prefetch-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Prefetch\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Prefetch</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">lookup</em>, <em class=\"sig-param\">queryset<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">to_attr<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Prefetch\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Objektet <code class=\"docutils literal notranslate\">Prefetch()</code> kan användas för att styra hur <a class=\"reference internal\" href=\"#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> fungerar.</p>\n<p>Argumentet <code class=\"docutils literal notranslate\">lookup</code> beskriver vilka relationer som ska följas och fungerar på samma sätt som de strängbaserade uppslag som skickas till <a class=\"reference internal\" href=\"#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>. Till 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><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> Prefetch\n<span class=\"gp\">&gt;&gt;&gt; </span>Question<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span>Prefetch<span class=\"p\">(</span><span class=\"s2\">&quot;choice_set&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span><span class=\"o\">.</span>choice_set<span class=\"o\">.</span>all<span class=\"p\">()</span>\n<span class=\"go\">&lt;QuerySet [&lt;Choice: Not much&gt;, &lt;Choice: The sky&gt;, &lt;Choice: Just hacking again&gt;]&gt;</span>\n<span class=\"go\"># This will only execute two queries regardless of the number of Question</span>\n<span class=\"go\"># and Choice objects.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Question<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span>Prefetch<span class=\"p\">(</span><span class=\"s2\">&quot;choice_set&quot;</span><span class=\"p\">))</span>\n<span class=\"go\">&lt;QuerySet [&lt;Question: What&#39;s up?&gt;]&gt;</span>\n</code></pre></div>\n<p>Argumentet <code class=\"docutils literal notranslate\">queryset</code> tillhandahåller en bas-<code class=\"docutils literal notranslate\">QuerySet</code> för det angivna uppslaget. Detta är användbart för att filtrera förinläsningsåtgärden ytterligare eller för att anropa <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.select_related\" title=\"django.db.models.query.QuerySet.select_related\"><code class=\"xref py py-meth docutils literal notranslate\">select_related()</code></a> från den förinlästa relationen och därmed minska antalet frågor ytterligare:</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>voted_choices <span class=\"o\">=</span> Choice<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>votes__gt<span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>voted_choices\n<span class=\"go\">&lt;QuerySet [&lt;Choice: The sky&gt;]&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>prefetch <span class=\"o\">=</span> Prefetch<span class=\"p\">(</span><span class=\"s2\">&quot;choice_set&quot;</span><span class=\"p\">,</span> queryset<span class=\"o\">=</span>voted_choices<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Question<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span>prefetch<span class=\"p\">)</span><span class=\"o\">.</span>get<span class=\"p\">()</span><span class=\"o\">.</span>choice_set<span class=\"o\">.</span>all<span class=\"p\">()</span>\n<span class=\"go\">&lt;QuerySet [&lt;Choice: The sky&gt;]&gt;</span>\n</code></pre></div>\n<p>Argumentet <code class=\"docutils literal notranslate\">to_attr</code> ställer in resultatet av prefetch-operationen till ett anpassat attribut:</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>prefetch <span class=\"o\">=</span> Prefetch<span class=\"p\">(</span><span class=\"s2\">&quot;choice_set&quot;</span><span class=\"p\">,</span> queryset<span class=\"o\">=</span>voted_choices<span class=\"p\">,</span> to_attr<span class=\"o\">=</span><span class=\"s2\">&quot;voted_choices&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Question<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span>prefetch<span class=\"p\">)</span><span class=\"o\">.</span>get<span class=\"p\">()</span><span class=\"o\">.</span>voted_choices\n<span class=\"go\">[&lt;Choice: The sky&gt;]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Question<span class=\"o\">.</span>objects<span class=\"o\">.</span>prefetch_related<span class=\"p\">(</span>prefetch<span class=\"p\">)</span><span class=\"o\">.</span>get<span class=\"p\">()</span><span class=\"o\">.</span>choice_set<span class=\"o\">.</span>all<span class=\"p\">()</span>\n<span class=\"go\">&lt;QuerySet [&lt;Choice: Not much&gt;, &lt;Choice: The sky&gt;, &lt;Choice: Just hacking again&gt;]&gt;</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>Vid användning av <code class=\"docutils literal notranslate\">to_attr</code> lagras det prefetchade resultatet i en lista. Detta kan ge en betydande hastighetsförbättring jämfört med traditionella <code class=\"docutils literal notranslate\">prefetch_related</code>-anrop som lagrar det cachade resultatet i en <code class=\"docutils literal notranslate\">QuerySet</code>-instans.</p>\n</aside>\n</section>\n<section id=\"prefetch-related-objects\">\n<h3><a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>prefetch_related_objects() ``<a class=\"heading-anchor\" href=\"#prefetch-related-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.prefetch_related_objects\">\n<span class=\"sig-name descname\">prefetch_related_objects</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">model_instances</em>, <em class=\"sig-param\"><span class=\"o\">*</span>related_lookups</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.prefetch_related_objects\"><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 function\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.aprefetch_related_objects\">\n<span class=\"sig-name descname\">aprefetch_related_objects</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">model_instances</em>, <em class=\"sig-param\"><span class=\"o\">*</span>related_lookups</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.aprefetch_related_objects\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><em>Asynkron version</em>: <code class=\"docutils literal notranslate\">aprefetch_related_objects()</code></p>\n<p>Förbereder de angivna uppslagningarna på en iterabel med modellinstanser. Detta är användbart i kod som tar emot en lista med modellinstanser i motsats till en <code class=\"docutils literal notranslate\">QuerySet</code>; till exempel när du hämtar modeller från en cache eller instansierar dem manuellt.</p>\n<p>Skicka in en itererbar samling modellinstanser (de måste alla ha samma klass och kunna itereras flera gånger) samt de uppslag eller <a class=\"reference internal\" href=\"#django.db.models.Prefetch\" title=\"django.db.models.Prefetch\"><code class=\"xref py py-class docutils literal notranslate\">Prefetch</code></a>-objekt som du vill förinläsa. Till 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><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> prefetch_related_objects\n<span class=\"gp\">&gt;&gt;&gt; </span>restaurants <span class=\"o\">=</span> fetch_top_restaurants_from_cache<span class=\"p\">()</span>  <span class=\"c1\"># A list of Restaurants</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>prefetch_related_objects<span class=\"p\">(</span>restaurants<span class=\"p\">,</span> <span class=\"s2\">&quot;pizzas__toppings&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>När du använder flera databaser med <code class=\"docutils literal notranslate\">prefetch_related_objects</code> kommer prefetch-frågan att använda den databas som är associerad med modellinstansen. Detta kan åsidosättas genom att använda en anpassad queryset i en relaterad sökning.</p>\n</section>\n<section id=\"filteredrelation-objects\">\n<h3><code class=\"docutils literal notranslate\">FiltreradRelation()</code> objekt<a class=\"heading-anchor\" href=\"#filteredrelation-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.FilteredRelation\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">FilteredRelation</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">relation_name</em>, <em class=\"sig-param\"><span class=\"keyword-only-separator o\"><abbr title=\"Keyword-only parameters separator (PEP 3102)\">*</abbr></span></em>, <em class=\"sig-param\">condition<span class=\"o\">=</span><span class=\"default_value\">Q()</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.FilteredRelation\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.FilteredRelation.relation_name\">\n<span class=\"sig-name descname\">relation_name</span><a class=\"heading-anchor\" href=\"#django.db.models.FilteredRelation.relation_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Namnet på det fält som du vill filtrera relationen på.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.FilteredRelation.condition\">\n<span class=\"sig-name descname\">condition</span><a class=\"heading-anchor\" href=\"#django.db.models.FilteredRelation.condition\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ett <a class=\"reference internal\" href=\"#q-objects\"><span class=\"std std-ref\">Q-objekt</span></a> för att styra filtreringen.</p>\n</dd></dl>\n\n</dd></dl>\n\n<p><code class=\"docutils literal notranslate\">FilteredRelation</code> används med <a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.annotate\" title=\"django.db.models.query.QuerySet.annotate\"><code class=\"xref py py-meth docutils literal notranslate\">annotate()</code></a> för att skapa en <code class=\"docutils literal notranslate\">ON</code>-sats när en <code class=\"docutils literal notranslate\">JOIN</code> utförs. Den verkar inte på standardrelationen utan på annoteringsnamnet (<code class=\"docutils literal notranslate\">pizzas_vegetarian</code> i exemplet nedan).</p>\n<p>Till exempel: för att hitta restauranger som har vegetariska pizzor med <code class=\"docutils literal notranslate\">'mozzarella</code> i namnet:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> FilteredRelation<span class=\"p\">,</span> Q\n<span class=\"gp\">&gt;&gt;&gt; </span>Restaurant<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    pizzas_vegetarian<span class=\"o\">=</span>FilteredRelation<span class=\"p\">(</span>\n<span class=\"gp\">... </span>        <span class=\"s2\">&quot;pizzas&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>        condition<span class=\"o\">=</span>Q<span class=\"p\">(</span>pizzas__vegetarian<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    <span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>filter<span class=\"p\">(</span>pizzas_vegetarian__name__icontains<span class=\"o\">=</span><span class=\"s2\">&quot;mozzarella&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Om det finns ett stort antal pizzor fungerar denna frågeuppsättning bättre ä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>Restaurant<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    pizzas__vegetarian<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    pizzas__name__icontains<span class=\"o\">=</span><span class=\"s2\">&quot;mozzarella&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n</code></pre></div>\n<p>eftersom filtreringen i <code class=\"docutils literal notranslate\">WHERE</code>-klausulen i den första frågeuppsättningen bara fungerar på vegetariska pizzor.</p>\n<p><code class=\"docutils literal notranslate\">FilteredRelation</code> stöder inte:</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"#django.db.models.query.QuerySet.only\" title=\"django.db.models.query.QuerySet.only\"><code class=\"xref py py-meth docutils literal notranslate\">QuerySet.only()</code></a> och <a class=\"reference internal\" href=\"#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>.</p></li>\n<li><p>En <a class=\"reference internal\" href=\"/sv/6.1/ref/contrib/contenttypes/#django.contrib.contenttypes.fields.GenericForeignKey\" title=\"django.contrib.contenttypes.fields.GenericForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">GenericForeignKey</code></a> ärvd från en överordnad modell.</p></li>\n</ul>\n</section>\n</section>","rootId":"queryset-api-reference","toc":[{"title":"När QuerySet utvärderas","anchor":"when-querysets-are-evaluated","children":[{"title":"Inläggning av ”QuuerySet","anchor":"pickling-querysets","children":[]}]},{"title":"aPI för ”frågeuppsättning","anchor":"queryset-api","children":[{"title":"Metoder som returnerar nya QuerySet","anchor":"methods-that-return-new-querysets","children":[{"title":"filter()","anchor":"filter","children":[]},{"title":"exkludera()","anchor":"exclude","children":[]},{"title":"annotate()","anchor":"annotate","children":[]},{"title":"alias()","anchor":"alias","children":[]},{"title":"order_by()","anchor":"order-by","children":[]},{"title":"reverse()","anchor":"reverse","children":[]},{"title":"distinct()","anchor":"distinct","children":[]},{"title":"värden()","anchor":"values","children":[]},{"title":"values_list()","anchor":"values-list","children":[]},{"title":"dates()","anchor":"dates","children":[]},{"title":"datetimes()","anchor":"datetimes","children":[]},{"title":"none()","anchor":"none","children":[]},{"title":"all()","anchor":"all","children":[]},{"title":"union()","anchor":"union","children":[]},{"title":"intersektion()","anchor":"intersection","children":[]},{"title":"skillnad()","anchor":"difference","children":[]},{"title":"fetch_mode()","anchor":"fetch-mode","children":[]},{"title":"select_related()","anchor":"select-related","children":[]},{"title":"prefetch_related()","anchor":"prefetch-related","children":[]},{"title":"extra()","anchor":"extra","children":[]},{"title":"defer()","anchor":"defer","children":[]},{"title":"only()","anchor":"only","children":[]},{"title":"using()","anchor":"using","children":[]},{"title":"select_for_update()","anchor":"select-for-update","children":[]},{"title":"raw()","anchor":"raw","children":[]}]},{"title":"Operatorer som returnerar nya QuerySet","anchor":"operators-that-return-new-querysets","children":[{"title":"AND (&)","anchor":"and","children":[]},{"title":"ELLER (|)","anchor":"or","children":[]},{"title":"XOR (^)","anchor":"xor","children":[]}]},{"title":"Metoder som inte returnerar QuerySet","anchor":"methods-that-do-not-return-querysets","children":[{"title":"get()","anchor":"get","children":[]},{"title":"create()","anchor":"create","children":[]},{"title":"get_or_create()","anchor":"get-or-create","children":[]},{"title":"uppdatera_eller_skapa()","anchor":"update-or-create","children":[]},{"title":"bulk_create()","anchor":"bulk-create","children":[]},{"title":"bulk_update()","anchor":"bulk-update","children":[]},{"title":"count()","anchor":"count","children":[]},{"title":"in_bulk()","anchor":"in-bulk","children":[]},{"title":"iterator()","anchor":"iterator","children":[{"title":"Med markörer på serversidan","anchor":"with-server-side-cursors","children":[]},{"title":"Utan markörer på serversidan","anchor":"without-server-side-cursors","children":[]}]},{"title":"nyaste()","anchor":"latest","children":[]},{"title":"earliest()","anchor":"earliest","children":[]},{"title":"första()","anchor":"first","children":[]},{"title":"last()","anchor":"last","children":[]},{"title":"aggregate()","anchor":"aggregate","children":[]},{"title":"exists()","anchor":"exists","children":[]},{"title":"contains()","anchor":"contains","children":[]},{"title":"uppdatera()","anchor":"update","children":[{"title":"Beställd queryset","anchor":"ordered-queryset","children":[]}]},{"title":"delete()","anchor":"delete","children":[]},{"title":"as_manager()","anchor":"as-manager","children":[]},{"title":"explain()","anchor":"explain","children":[]}]},{"title":"Field uppslagningar","anchor":"field-lookups","children":[{"title":"exakt","anchor":"exact","children":[]},{"title":"iexakt","anchor":"iexact","children":[]},{"title":"innehåller","anchor":"std-fieldlookup-contains","children":[]},{"title":"ikoner","anchor":"icontains","children":[]},{"title":"in","anchor":"in","children":[]},{"title":"gt","anchor":"gt","children":[]},{"title":"gte","anchor":"gte","children":[]},{"title":"lt","anchor":"lt","children":[]},{"title":"lte","anchor":"lte","children":[]},{"title":"börjar med","anchor":"startswith","children":[]},{"title":"istartswith","anchor":"istartswith","children":[]},{"title":"slutar med","anchor":"endswith","children":[]},{"title":"”i vänskap med","anchor":"iendswith","children":[]},{"title":"intervall","anchor":"range","children":[]},{"title":"datum","anchor":"date","children":[]},{"title":"år","anchor":"year","children":[]},{"title":"iso_year","anchor":"iso-year","children":[]},{"title":"månad","anchor":"month","children":[]},{"title":"dag","anchor":"day","children":[]},{"title":"vecka","anchor":"week","children":[]},{"title":"veckodag","anchor":"week-day","children":[]},{"title":"iso_week_day","anchor":"iso-week-day","children":[]},{"title":"kvartal","anchor":"quarter","children":[]},{"title":"tid","anchor":"time","children":[]},{"title":"timme","anchor":"hour","children":[]},{"title":"minut","anchor":"minute","children":[]},{"title":"sekund","anchor":"second","children":[]},{"title":"isnull","anchor":"isnull","children":[]},{"title":"regex","anchor":"regex","children":[]},{"title":"iregex","anchor":"iregex","children":[]}]},{"title":"Aggregeringsfunktioner","anchor":"aggregation-functions","children":[{"title":"uttryck","anchor":"expressions","children":[]},{"title":"utgångsfält","anchor":"output-field","children":[]},{"title":"filter","anchor":"aggregate-filter","children":[]},{"title":"standard","anchor":"default","children":[]},{"title":"**extra","anchor":"id8","children":[]},{"title":"AnyValue","anchor":"anyvalue","children":[]},{"title":"Avg","anchor":"avg","children":[]},{"title":"Bit och","anchor":"bitand","children":[]},{"title":"BitOr","anchor":"bitor","children":[]},{"title":"BitXor","anchor":"bitxor","children":[]},{"title":"Count","anchor":"id9","children":[]},{"title":"Max","anchor":"max","children":[]},{"title":"Min","anchor":"min","children":[]},{"title":"StdDev","anchor":"stddev","children":[]},{"title":"Summa","anchor":"sum","children":[]},{"title":"Varians","anchor":"variance","children":[]},{"title":"StringAgg","anchor":"stringagg","children":[]}]}]},{"title":"Frågerelaterade verktyg","anchor":"query-related-tools","children":[{"title":"objekt av typen Q()","anchor":"q-objects","children":[]},{"title":"Prefetch()-objekt","anchor":"prefetch-objects","children":[]},{"title":"``prefetch_related_objects() ``","anchor":"prefetch-related-objects","children":[]},{"title":"FiltreradRelation() objekt","anchor":"filteredrelation-objects","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"API-referens","url":"/sv/6.1/ref/"},{"docname":"ref/models/index","title":"Modeller","url":"/sv/6.1/ref/models/"}],"prev":{"docname":"ref/models/instances","title":"Referens till modellinstans","url":"/sv/6.1/ref/models/instances/"},"next":{"docname":"ref/models/lookups","title":"API-referens för uppslagning","url":"/sv/6.1/ref/models/lookups/"},"formats":{"html":"/sv/6.1/ref/models/querysets/","markdown":"/sv/6.1/ref/models/querysets.md","json":"/sv/6.1/ref/models/querysets.json"},"source":"https://github.com/django/django/blob/stable/6.1.x/docs/ref/models/querysets.txt","official":"https://docs.djangoproject.com/sv/6.1/ref/models/querysets/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}