{"title":"Nathanna ceisteanna","version":"5.2","locale":"ga","docname":"ref/models/expressions","url":"/ga/5.2/ref/models/expressions/","canonical":"https://djangodocs.dev/ga/5.2/ref/models/expressions/","summary":"Déanann nathanna fiosrúcháin cur síos ar luach nó ar ríomh is féidir a úsáid mar chuid de nuashonrú, cruthú, scagadh, ordú de réir, anótáil nó comhiomlán. Nuair a…","html":"<h1>Nathanna ceisteanna<a class=\"heading-anchor\" href=\"#query-expressions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Déanann nathanna fiosrúcháin cur síos ar luach nó ar ríomh is féidir a úsáid mar chuid de nuashonrú, cruthú, scagadh, ordú de réir, anótáil nó comhiomlán. Nuair a aschuireann abairt luach boolean, féadfar é a úsáid go díreach i scagairí. Tá roinnt nathanna ionsuite ann (doiciméadaithe thíos) is féidir a úsáid chun cabhrú leat ceisteanna a scríobh. Is féidir nathanna a chomhcheangal, nó i gcásanna áirithe a neadú, chun ríomhanna níos casta a fhoirmiú.</p>\n<section id=\"supported-arithmetic\">\n<h2>Uimhrithíocht tacaithe<a class=\"heading-anchor\" href=\"#supported-arithmetic\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Tacaíonn Django le diúltú, cur leis, íolrú, iolrú, roinnt, uimhríocht modulo, agus an t-oibreoir cumhachta ar nathanna fiosrúcháin, ag baint úsáide as comhsheasmhainní Python, athróga, agus fiú nathanna eile.</p>\n</section>\n<section id=\"output-field\">\n<span id=\"id1\"></span><h2>Réimse aschuir<a class=\"heading-anchor\" href=\"#output-field\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Tacaíonn go leor de na nathanna doiciméadaithe sa chuid seo le paraiméadar roghnach <code class=\"docutils literal notranslate\"><span class=\"pre\">output_field</span></code>. Má thugtar, luchtálfaidh Django an luach isteach sa réimse sin tar éis é a aisghabháil ón mbunachar sonraí.</p>\n<p>Glacann <code class=\"docutils literal notranslate\"><span class=\"pre\">output_field</span></code> sampla réimse samhail, mar <code class=\"docutils literal notranslate\"><span class=\"pre\">IntegerField</span> <span class=\"pre\">()</span> <span class=\"pre\">``nó</span> <span class=\"pre\">``BooleanField</span> <span class=\"pre\">()</span></code>. De ghnáth, ní theastaíonn aon argóintí ón réimse, cosúil le <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>max_length <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>, ós rud é go mbaineann argóintí réimse le bailíochtú sonraí nach ndéanfar ar luach aschuir an abairt.</p>\n<p>Ní theastaíonn <code class=\"docutils literal notranslate\"><span class=\"pre\">output_field</span></code> ach amháin nuair nach bhfuil Django in ann cineál réimse an torthaí a chinneadh go huathoibríoch, mar shampla nathanna casta a mheascann cineálacha réimse. Mar shampla, teastaíonn réimse aschuir <code class=\"docutils literal notranslate\"><span class=\"pre\">DecimalField</span> <span class=\"pre\">()</span> <span class=\"pre\">``agus</span> <span class=\"pre\">``FloatField</span> <span class=\"pre\">()</span></code> a chur leis, cosúil le <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>output_field=floatField () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>.</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">output_field</span></code> also allows using custom fields that perform type conversions\noutside a specific model field context. For example, if you frequently need to\nperform date arithmetic with <code class=\"docutils literal notranslate\"><span class=\"pre\">timedelta</span></code>, you can create a custom field that\nhandles the conversion, ensuring consistent results across databases. See\n<a class=\"reference internal\" href=\"/ga/5.2/howto/custom-model-fields/\"><span class=\"doc\">Conas réimsí samhail saincheaptha a chruthú</span></a>.</p>\n</section>\n<section id=\"some-examples\">\n<h2>Roinnt samplaí<a class=\"heading-anchor\" href=\"#some-examples\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\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=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Count</span><span class=\"p\">,</span> <span class=\"n\">F</span><span class=\"p\">,</span> <span class=\"n\">Value</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db.models.functions</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Length</span><span class=\"p\">,</span> <span class=\"n\">Upper</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db.models.lookups</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">GreaterThan</span>\n\n<span class=\"go\"># Find companies that have more employees than chairs.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Company</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">num_employees__gt</span><span class=\"o\">=</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;num_chairs&quot;</span><span class=\"p\">))</span>\n\n<span class=\"go\"># Find companies that have at least twice as many employees</span>\n<span class=\"go\"># as chairs. Both the querysets below are equivalent.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Company</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">num_employees__gt</span><span class=\"o\">=</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;num_chairs&quot;</span><span class=\"p\">)</span> <span class=\"o\">*</span> <span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Company</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">num_employees__gt</span><span class=\"o\">=</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;num_chairs&quot;</span><span class=\"p\">)</span> <span class=\"o\">+</span> <span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;num_chairs&quot;</span><span class=\"p\">))</span>\n\n<span class=\"go\"># How many chairs are needed for each company to seat all employees?</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">company</span> <span class=\"o\">=</span> <span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">Company</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">num_employees__gt</span><span class=\"o\">=</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;num_chairs&quot;</span><span class=\"p\">))</span>\n<span class=\"gp\">... </span>    <span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span><span class=\"n\">chairs_needed</span><span class=\"o\">=</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;num_employees&quot;</span><span class=\"p\">)</span> <span class=\"o\">-</span> <span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;num_chairs&quot;</span><span class=\"p\">))</span>\n<span class=\"gp\">... </span>    <span class=\"o\">.</span><span class=\"n\">first</span><span class=\"p\">()</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">company</span><span class=\"o\">.</span><span class=\"n\">num_employees</span>\n<span class=\"go\">120</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">company</span><span class=\"o\">.</span><span class=\"n\">num_chairs</span>\n<span class=\"go\">50</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">company</span><span class=\"o\">.</span><span class=\"n\">chairs_needed</span>\n<span class=\"go\">70</span>\n\n<span class=\"go\"># Create a new company using expressions.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">company</span> <span class=\"o\">=</span> <span class=\"n\">Company</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">create</span><span class=\"p\">(</span><span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;Google&quot;</span><span class=\"p\">,</span> <span class=\"n\">ticker</span><span class=\"o\">=</span><span class=\"n\">Upper</span><span class=\"p\">(</span><span class=\"n\">Value</span><span class=\"p\">(</span><span class=\"s2\">&quot;goog&quot;</span><span class=\"p\">)))</span>\n<span class=\"go\"># Be sure to refresh it if you need to access the field.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">company</span><span class=\"o\">.</span><span class=\"n\">refresh_from_db</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">company</span><span class=\"o\">.</span><span class=\"n\">ticker</span>\n<span class=\"go\">&#39;GOOG&#39;</span>\n\n<span class=\"go\"># Annotate models with an aggregated value. Both forms</span>\n<span class=\"go\"># below are equivalent.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Company</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span><span class=\"n\">num_products</span><span class=\"o\">=</span><span class=\"n\">Count</span><span class=\"p\">(</span><span class=\"s2\">&quot;products&quot;</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Company</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span><span class=\"n\">num_products</span><span class=\"o\">=</span><span class=\"n\">Count</span><span class=\"p\">(</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;products&quot;</span><span class=\"p\">)))</span>\n\n<span class=\"go\"># Aggregates can contain complex computations also</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Company</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span><span class=\"n\">num_offerings</span><span class=\"o\">=</span><span class=\"n\">Count</span><span class=\"p\">(</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;products&quot;</span><span class=\"p\">)</span> <span class=\"o\">+</span> <span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;services&quot;</span><span class=\"p\">)))</span>\n\n<span class=\"go\"># Expressions can also be used in order_by(), either directly</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Company</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">order_by</span><span class=\"p\">(</span><span class=\"n\">Length</span><span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">asc</span><span class=\"p\">())</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Company</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">order_by</span><span class=\"p\">(</span><span class=\"n\">Length</span><span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">desc</span><span class=\"p\">())</span>\n<span class=\"go\"># or using the double underscore lookup syntax.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">CharField</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db.models.functions</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Length</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">CharField</span><span class=\"o\">.</span><span class=\"n\">register_lookup</span><span class=\"p\">(</span><span class=\"n\">Length</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Company</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">order_by</span><span class=\"p\">(</span><span class=\"s2\">&quot;name__length&quot;</span><span class=\"p\">)</span>\n\n<span class=\"go\"># Boolean expression can be used directly in filters.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Exists</span><span class=\"p\">,</span> <span class=\"n\">OuterRef</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Company</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">Exists</span><span class=\"p\">(</span><span class=\"n\">Employee</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">company</span><span class=\"o\">=</span><span class=\"n\">OuterRef</span><span class=\"p\">(</span><span class=\"s2\">&quot;pk&quot;</span><span class=\"p\">),</span> <span class=\"n\">salary__gt</span><span class=\"o\">=</span><span class=\"mi\">10</span><span class=\"p\">))</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n\n<span class=\"go\"># Lookup expressions can also be used directly in filters</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Company</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">GreaterThan</span><span class=\"p\">(</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;num_employees&quot;</span><span class=\"p\">),</span> <span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;num_chairs&quot;</span><span class=\"p\">)))</span>\n<span class=\"go\"># or annotations.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Company</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">need_chairs</span><span class=\"o\">=</span><span class=\"n\">GreaterThan</span><span class=\"p\">(</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;num_employees&quot;</span><span class=\"p\">),</span> <span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;num_chairs&quot;</span><span class=\"p\">)),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"built-in-expressions\">\n<h2>Nathanna tógtha<a class=\"heading-anchor\" href=\"#built-in-expressions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Sainmhínítear na nathanna seo in django.db.models.expressions` agus <code class=\"docutils literal notranslate\"><span class=\"pre\">django.db.models.aggregates</span></code>, ach ar mhaithe le háisiúlacht bíonn siad ar fáil agus de ghnáth allmhairithe ó:mod: django.db.models.</p>\n</aside>\n<section id=\"f-expressions\">\n<h3>Nathanna <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>F () ``<a class=\"heading-anchor\" href=\"#f-expressions\"><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.F\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">F</span></span><a class=\"heading-anchor\" href=\"#django.db.models.F\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Léiríonn réad <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>F () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>luach réimse samhail, luach claochlaithe réimse samhail, nó colún anótaithe. De bharr sé gur féidir tagairt a dhéanamh do luachanna réimse samhail agus oibríochtaí bunachar sonraí a dhéanamh ag baint úsáide as iad gan iad a tharraingt amach as an mbunachar sonraí isteach i gcuimhne Python.</p>\n<p>Ina áit sin, úsáideann Django an réad <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>F () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>chun abairt SQL a ghiniúint a thugann cur síos ar an oibríocht riachtanach ag leibhéal an bhunachar sonraí.</p>\n<p>Déanaimis triail a bhaint as seo le sampla. De ghnáth, d'fhéadfadh duine rud éigin mar seo a dhéanamh:</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\"># Tintin filed a news story!</span>\n<span class=\"n\">reporter</span> <span class=\"o\">=</span> <span class=\"n\">Reporters</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;Tintin&quot;</span><span class=\"p\">)</span>\n<span class=\"n\">reporter</span><span class=\"o\">.</span><span class=\"n\">stories_filed</span> <span class=\"o\">+=</span> <span class=\"mi\">1</span>\n<span class=\"n\">reporter</span><span class=\"o\">.</span><span class=\"n\">save</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>Anseo, tarraingamar luach <code class=\"docutils literal notranslate\"><span class=\"pre\">reporter.stories_filed</span></code> ón mbunachar sonraí isteach i gcuimhne agus rinneamar é a ionramháil ag baint úsáide as oibreoirí Python eolach, agus ansin shábháil an réad ar ais chuig an mbunachar sonraí. Ach ina ionad sin d'fhéadfaimis a dhéanamh freisin:</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=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">F</span>\n\n<span class=\"n\">reporter</span> <span class=\"o\">=</span> <span class=\"n\">Reporters</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;Tintin&quot;</span><span class=\"p\">)</span>\n<span class=\"n\">reporter</span><span class=\"o\">.</span><span class=\"n\">stories_filed</span> <span class=\"o\">=</span> <span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;stories_filed&quot;</span><span class=\"p\">)</span> <span class=\"o\">+</span> <span class=\"mi\">1</span>\n<span class=\"n\">reporter</span><span class=\"o\">.</span><span class=\"n\">save</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>Cé go bhfuil cuma <code class=\"docutils literal notranslate\"><span class=\"pre\">reporter.stories_filed</span> <span class=\"pre\">=</span> <span class=\"pre\">F</span> <span class=\"pre\">('stories_filed')</span> <span class=\"pre\">+</span> <span class=\"pre\">1</span></code> cosúil le gnáthshannadh luach Python le tréith sampla, i ndáiríre is tógáil SQL é ag cur síos ar oibríocht ar an mbunachar sonraí.</p>\n<p>Nuair a thagann Django le sampla de <code class=\"docutils literal notranslate\"><span class=\"pre\">F</span> <span class=\"pre\">()</span> <span class=\"pre\">``,</span> <span class=\"pre\">a</span> <span class=\"pre\">sháraíonn</span> <span class=\"pre\">sé</span> <span class=\"pre\">na</span> <span class=\"pre\">hoibreoirí</span> <span class=\"pre\">caighdeánacha</span> <span class=\"pre\">Python</span> <span class=\"pre\">chun</span> <span class=\"pre\">abairt</span> <span class=\"pre\">SQL</span> <span class=\"pre\">cumhdaithe</span> <span class=\"pre\">a</span> <span class=\"pre\">chruthú;</span> <span class=\"pre\">sa</span> <span class=\"pre\">chás</span> <span class=\"pre\">seo,</span> <span class=\"pre\">ceann</span> <span class=\"pre\">a</span> <span class=\"pre\">thugann</span> <span class=\"pre\">treoir</span> <span class=\"pre\">don</span> <span class=\"pre\">bhunachar</span> <span class=\"pre\">sonraí</span> <span class=\"pre\">an</span> <span class=\"pre\">réimse</span> <span class=\"pre\">bunachar</span> <span class=\"pre\">sonraí</span> <span class=\"pre\">a</span> <span class=\"pre\">léiríonn</span> <span class=\"pre\">``reporter.stories_filed</span></code> a mhéadú.</p>\n<p>Cibé luach atá nó a bhí ar reporter.stories_filed`, ní fhaigheann Python eolas faoi riamh - déileálann an bunachar sonraí leis go hiomlán. Is é gach rud a dhéanann Python, trí rang <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>F () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>Django, an comhréiteach SQL a chruthú chun tagairt a dhéanamh don réimse agus cur síos a dhéanamh ar an oibríocht.</p>\n<p>Chun rochtain a fháil ar an luach nua a shábháil ar an mbealach seo, caithfear an réad a athluchtú:</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=\"n\">reporter</span> <span class=\"o\">=</span> <span class=\"n\">Reporters</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"n\">pk</span><span class=\"o\">=</span><span class=\"n\">reporter</span><span class=\"o\">.</span><span class=\"n\">pk</span><span class=\"p\">)</span>\n<span class=\"c1\"># Or, more succinctly:</span>\n<span class=\"n\">reporter</span><span class=\"o\">.</span><span class=\"n\">refresh_from_db</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>As well as being used in operations on single instances as above, <code class=\"docutils literal notranslate\"><span class=\"pre\">F()</span></code> can\nbe used with <code class=\"docutils literal notranslate\"><span class=\"pre\">update()</span></code> to perform bulk updates on a <code class=\"docutils literal notranslate\"><span class=\"pre\">QuerySet</span></code>. This\nreduces the two queries we were using above - the <code class=\"docutils literal notranslate\"><span class=\"pre\">get()</span></code> and the\n<a class=\"reference internal\" href=\"/ga/5.2/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">save()</span></code></a> - to just one:</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=\"n\">reporter</span> <span class=\"o\">=</span> <span class=\"n\">Reporters</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;Tintin&quot;</span><span class=\"p\">)</span>\n<span class=\"n\">reporter</span><span class=\"o\">.</span><span class=\"n\">update</span><span class=\"p\">(</span><span class=\"n\">stories_filed</span><span class=\"o\">=</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;stories_filed&quot;</span><span class=\"p\">)</span> <span class=\"o\">+</span> <span class=\"mi\">1</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Is féidir linn freisin: meth: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>~django.db.models.query.queryset.update () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>a úsáid chun luach an réimse a mhéadú ar rudaí iolracha - rud a d'fhéadfadh a bheith i bhfad níos gasta ná iad go léir a tharraingt isteach i Python ón mbunachar sonraí, luach réimse gach ceann a mhéadú, agus gach ceann a shábháil ar ais chuig an mbunachar sonraí:</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=\"n\">Reporter</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">update</span><span class=\"p\">(</span><span class=\"n\">stories_filed</span><span class=\"o\">=</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;stories_filed&quot;</span><span class=\"p\">)</span> <span class=\"o\">+</span> <span class=\"mi\">1</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Dá bhrí sin is féidir le <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>F () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>buntáistí feidhmíochta a thairiscint trí:</p>\n<ul class=\"simple\">\n<li><p>an bunachar sonraí a fháil, seachas Python, chun obair a dhéanamh</p></li>\n<li><p>laghdú ar líon na gceisteanna a theastaíonn ó oibríochtaí</p></li>\n</ul>\n<section id=\"slicing-f-expressions\">\n<span id=\"slicing-using-f\"></span><h4>Ag sliseadh abairtí <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>F () ``<a class=\"heading-anchor\" href=\"#slicing-f-expressions\"><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=\"5.1\">\n<p class=\"version-note-title\">New in Django 5.1</p></aside>\n<p>For string-based fields, text-based fields, and\n<a class=\"reference internal\" href=\"/ga/5.2/ref/contrib/postgres/fields/#django.contrib.postgres.fields.ArrayField\" title=\"django.contrib.postgres.fields.ArrayField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ArrayField</span></code></a>, you can use Python's\narray-slicing syntax. The indices are 0-based. The <code class=\"docutils literal notranslate\"><span class=\"pre\">step</span></code> argument to\n<code class=\"docutils literal notranslate\"><span class=\"pre\">slice</span></code> and negative indexing are not supported. For example:</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\"># Replacing a name with a substring of itself.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">writer</span> <span class=\"o\">=</span> <span class=\"n\">Writers</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;Priyansh&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">writer</span><span class=\"o\">.</span><span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">)[</span><span class=\"mi\">1</span><span class=\"p\">:</span><span class=\"mi\">5</span><span class=\"p\">]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">writer</span><span class=\"o\">.</span><span class=\"n\">save</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">writer</span><span class=\"o\">.</span><span class=\"n\">refresh_from_db</span><span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">writer</span><span class=\"o\">.</span><span class=\"n\">name</span>\n<span class=\"go\">&#39;riya&#39;</span>\n</code></pre></div>\n</section>\n<section id=\"avoiding-race-conditions-using-f\">\n<span id=\"id2\"></span><h4>Coinníollacha rása a sheachaint ag baint úsáide as <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>F () ``<a class=\"heading-anchor\" href=\"#avoiding-race-conditions-using-f\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Buntáiste úsáideach eile a bhaineann le <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>F () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>ná go seachnaíonn an bunachar sonraí - seachas Python - luach réimse a nuashonrú <em>coinníoll rása</em>.</p>\n<p>Má fhorghníomhaíonn dhá snáithe Python an cód sa chéad shampla thuas, d'fhéadfadh snáithe amháin luach réimse a aisghabháil, a mhéadú agus a shábháil tar éis don duine eile é a aisghabháil ón mbunachar sonraí. Beidh an luach a shábhálann an dara snáithe bunaithe ar an luach bunaidh; caillfear obair an chéad snáithe.</p>\n<p>Má tá an bunachar sonraí freagrach as an réimse a nuashonrú, tá an próiseas níos láidre: ní dhéanfaidh sé an réimse a nuashonrú riamh bunaithe ar luach an réimse sa bhunachar sonraí nuair a fhorghníomhaítear an:meth: ~model.save () `nó `update () `, seachas bunaithe ar a luach nuair a aisghabhadh an cás.</p>\n</section>\n<section id=\"f-assignments-persist-after-model-save\">\n<h4>Leanann tascanna <code class=\"docutils literal notranslate\"><span class=\"pre\">F</span> <span class=\"pre\">()</span> <span class=\"pre\">``tar</span> <span class=\"pre\">éis</span> <span class=\"pre\">``Model.save</span> <span class=\"pre\">()</span></code><a class=\"heading-anchor\" href=\"#f-assignments-persist-after-model-save\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Leanann rudaí <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>F () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>a shanntar do réimsí samhail tar éis an tsamhail a shábháil agus cuirfear i bhfeidhm ar gach ceann: meth: <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">`</span></a>~Model.save () <a href=\"#id7\"><span class=\"problematic\" id=\"id8\">`</span></a>. Mar shampla:</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=\"n\">reporter</span> <span class=\"o\">=</span> <span class=\"n\">Reporters</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;Tintin&quot;</span><span class=\"p\">)</span>\n<span class=\"n\">reporter</span><span class=\"o\">.</span><span class=\"n\">stories_filed</span> <span class=\"o\">=</span> <span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;stories_filed&quot;</span><span class=\"p\">)</span> <span class=\"o\">+</span> <span class=\"mi\">1</span>\n<span class=\"n\">reporter</span><span class=\"o\">.</span><span class=\"n\">save</span><span class=\"p\">()</span>\n\n<span class=\"n\">reporter</span><span class=\"o\">.</span><span class=\"n\">name</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;Tintin Jr.&quot;</span>\n<span class=\"n\">reporter</span><span class=\"o\">.</span><span class=\"n\">save</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>Déanfar <code class=\"docutils literal notranslate\"><span class=\"pre\">stories_filed</span></code> a nuashonrú faoi dhó sa chás seo. Má tá sé ar dtús <code class=\"docutils literal notranslate\"><span class=\"pre\">1</span></code>, is é <code class=\"docutils literal notranslate\"><span class=\"pre\">3</span></code> an luach deiridh. Is féidir an marthanacht seo a sheachaint tríd an réad samhail a athluchtú tar éis é a shábháil, mar shampla, trí:meth: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>~Model.fresh_from_db () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>a úsáid.</p>\n</section>\n<section id=\"using-f-in-filters\">\n<h4>Ag baint úsáide as <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>F () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>i scagairí<a class=\"heading-anchor\" href=\"#using-f-in-filters\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Tá <code class=\"docutils literal notranslate\"><span class=\"pre\">F</span> <span class=\"pre\">()</span> <span class=\"pre\">``an-úsáideach</span> <span class=\"pre\">freisin</span> <span class=\"pre\">i</span> <span class=\"pre\">scagairí</span> <span class=\"pre\">``QuerySet</span></code>, áit a ndéanann siad sraith rudaí a scagadh i gcoinne critéir bunaithe ar a luachanna réimse, seachas ar luachanna Python.</p>\n<p>&lt;using-f-expressions-in-filters&gt;Tá sé seo doiciméadaithe in:ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>ag baint úsáide as abairtí F () i gceisteanna <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>.</p>\n</section>\n<section id=\"using-f-with-annotations\">\n<span id=\"id3\"></span><h4>Ag baint úsáide as <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>F () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>le anótaí<a class=\"heading-anchor\" href=\"#using-f-with-annotations\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Is féidir <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>F () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>a úsáid chun réimsí dinimiciúla a chruthú ar do mhúnlaí trí réimsí éagsúla a chomhcheangal le huimhríocht:</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=\"n\">company</span> <span class=\"o\">=</span> <span class=\"n\">Company</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span><span class=\"n\">chairs_needed</span><span class=\"o\">=</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;num_employees&quot;</span><span class=\"p\">)</span> <span class=\"o\">-</span> <span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;num_chairs&quot;</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>Má tá na réimsí atá á gcomhcheangal agat de chineálacha éagsúla beidh ort a rá le Django cén cineál réimse a thabharfar ar ais. Tacaíonn an chuid is mó de na nathanna le :ref: output_field &lt;output-field&gt;`don chás seo, ach ós rud é nach ndéanann ``F () `, beidh ort an abairt a fhilleadh le:class: ExpressionWrapper:</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=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">DateTimeField</span><span class=\"p\">,</span> <span class=\"n\">ExpressionWrapper</span><span class=\"p\">,</span> <span class=\"n\">F</span>\n\n<span class=\"n\">Ticket</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span>\n    <span class=\"n\">expires</span><span class=\"o\">=</span><span class=\"n\">ExpressionWrapper</span><span class=\"p\">(</span>\n        <span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;active_at&quot;</span><span class=\"p\">)</span> <span class=\"o\">+</span> <span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;duration&quot;</span><span class=\"p\">),</span> <span class=\"n\">output_field</span><span class=\"o\">=</span><span class=\"n\">DateTimeField</span><span class=\"p\">()</span>\n    <span class=\"p\">)</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p>Nuair a dhéantar tagairt do réimsí coibhneasta mar <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code>, tugann F ()` an príomhluach seachas samhail samhail:</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=\"n\">car</span> <span class=\"o\">=</span> <span class=\"n\">Company</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span><span class=\"n\">built_by</span><span class=\"o\">=</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;manufacturer&quot;</span><span class=\"p\">))[</span><span class=\"mi\">0</span><span class=\"p\">]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">car</span><span class=\"o\">.</span><span class=\"n\">manufacturer</span>\n<span class=\"go\">&lt;Manufacturer: Toyota&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">car</span><span class=\"o\">.</span><span class=\"n\">built_by</span>\n<span class=\"go\">3</span>\n</code></pre></div>\n</section>\n<section id=\"using-f-to-sort-null-values\">\n<span id=\"id4\"></span><h4>Ag baint úsáide as <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>F () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>chun luachanna neall a shórtáil<a class=\"heading-anchor\" href=\"#using-f-to-sort-null-values\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Úsáid <code class=\"docutils literal notranslate\"><span class=\"pre\">F</span> <span class=\"pre\">()</span> <span class=\"pre\">``agus</span> <span class=\"pre\">an</span> <span class=\"pre\">argóint</span> <span class=\"pre\">eochairfhocal</span> <span class=\"pre\">``nulls_first</span></code> nó <code class=\"docutils literal notranslate\"><span class=\"pre\">nulls_last</span></code> to:meth: .expression.asc nô:meth: ~.expression.desc chun ordú luachanna null réimse a rialú. De réir réamhshocrú, braitheann an t-ordú ar do bhunachar sonraí.</p>\n<p>Mar shampla, chun cuideachtaí nár tugadh teagmháil leo a shórtáil (<code class=\"docutils literal notranslate\"><span class=\"pre\">last_contacted</span></code> is null) tar éis cuideachtaí a ndearnadh teagmháil leo:</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=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">F</span>\n\n<span class=\"n\">Company</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">order_by</span><span class=\"p\">(</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;last_contacted&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">desc</span><span class=\"p\">(</span><span class=\"n\">nulls_last</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">))</span>\n</code></pre></div>\n</section>\n<section id=\"using-f-with-logical-operations\">\n<h4>Ag baint úsáide as <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>F () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>le hoibríochtaí loighciúla<a class=\"heading-anchor\" href=\"#using-f-with-logical-operations\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Nathanna <code class=\"docutils literal notranslate\"><span class=\"pre\">F</span> <span class=\"pre\">()</span> <span class=\"pre\">``is</span> <span class=\"pre\">féidir</span> <span class=\"pre\">aschur</span> <span class=\"pre\">``Booleanfield</span></code> a dhiúltú go loighciúil leis an oibreoir iompaithe <code class=\"docutils literal notranslate\"><span class=\"pre\">~F</span> <span class=\"pre\">()</span></code>. Mar shampla, chun stádas gníomhachtaithe cuideachtaí a mhalartú:</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=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">F</span>\n\n<span class=\"n\">Company</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">update</span><span class=\"p\">(</span><span class=\"n\">is_active</span><span class=\"o\">=~</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;is_active&quot;</span><span class=\"p\">))</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"func-expressions\">\n<span id=\"id5\"></span><h3>Nathanna <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Func () ``<a class=\"heading-anchor\" href=\"#func-expressions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Is iad abairtí <code class=\"docutils literal notranslate\"><span class=\"pre\">Func</span> <span class=\"pre\">()</span> <span class=\"pre\">``an</span> <span class=\"pre\">bunchineál</span> <span class=\"pre\">de</span> <span class=\"pre\">na</span> <span class=\"pre\">nathanna</span> <span class=\"pre\">go</span> <span class=\"pre\">léir</span> <span class=\"pre\">a</span> <span class=\"pre\">mbaineann</span> <span class=\"pre\">feidhmeanna</span> <span class=\"pre\">bunachar</span> <span class=\"pre\">sonraí</span> <span class=\"pre\">mar</span> <span class=\"pre\">`COALESCE</span></code> agus <code class=\"docutils literal notranslate\"><span class=\"pre\">LOWER</span></code>, nó comhiomlánacha mar SUM`. Is féidir iad a úsáid go díreach:</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=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">F</span><span class=\"p\">,</span> <span class=\"n\">Func</span>\n\n<span class=\"n\">queryset</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span><span class=\"n\">field_lower</span><span class=\"o\">=</span><span class=\"n\">Func</span><span class=\"p\">(</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;field&quot;</span><span class=\"p\">),</span> <span class=\"n\">function</span><span class=\"o\">=</span><span class=\"s2\">&quot;LOWER&quot;</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>nó is féidir iad a úsáid chun leabharlann feidhmeanna bunachar sonraí a thógáil:</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=\"w\"> </span><span class=\"nc\">Lower</span><span class=\"p\">(</span><span class=\"n\">Func</span><span class=\"p\">):</span>\n    <span class=\"n\">function</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;LOWER&quot;</span>\n\n\n<span class=\"n\">queryset</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span><span class=\"n\">field_lower</span><span class=\"o\">=</span><span class=\"n\">Lower</span><span class=\"p\">(</span><span class=\"s2\">&quot;field&quot;</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>Ach beidh tacar ceisteanna mar thoradh ar an dá chás ina ndéantar anótáil ar gach samhail le tréith breise <code class=\"docutils literal notranslate\"><span class=\"pre\">field_lower</span></code> a tháirgtear, go garbh, ón SQL seo a leanas:</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>\n<span class=\"w\">    </span><span class=\"p\">...</span>\n<span class=\"w\">    </span><span class=\"k\">LOWER</span><span class=\"p\">(</span><span class=\"ss\">&quot;db_table&quot;</span><span class=\"p\">.</span><span class=\"ss\">&quot;field&quot;</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"k\">as</span><span class=\"w\"> </span><span class=\"ss\">&quot;field_lower&quot;</span>\n</code></pre></div>\n<p>Féach: doc: feidhmeanna bunachar sonraí le haghaidh liosta de fheidhmeanna bunachar sonraí ionsuite.</p>\n<p>Is é seo a leanas an API Func`:</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Func\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">Func</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">expressions</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">extra</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Func\"><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.Func.function\">\n<span class=\"sig-name descname\"><span class=\"pre\">function</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Func.function\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Tréith aicme a dhéanann cur síos ar an bhfeidhm a ghinteofar. Go sonrach, déanfar an feidhm ``idirphóilte mar shealbhóir an ``feidhmi` laistigh de: attr: teimpléad. Réamhshocraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Func.template\">\n<span class=\"sig-name descname\"><span class=\"pre\">template</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Func.template\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Tréith aicme, mar shreang formáide, a chuireann síos ar an SQL a ghintear don fheidhm seo. Réamhshocraithe go <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>'% (function) s (% (expressions) s) '<a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>.</p>\n<p>Má tá SQL á thógáil agat cosúil le strftime ('%W', 'date') ``agus má theastaíonn carachtar liteartha ``%` sa cheist, é a cheathrú (<code class=\"docutils literal notranslate\"><span class=\"pre\">%%%%%</span></code>) sa tréith <code class=\"docutils literal notranslate\"><span class=\"pre\">teimpléad</span></code> toisc go ndéantar an sreang idirphóilte dhá uair: uair amháin le linn an teimpléid in as_sql ()` agus uair amháin san idirpholú SQL leis na paraiméadair iarratais sa chúrsóir bunachar sonraí.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Func.arg_joiner\">\n<span class=\"sig-name descname\"><span class=\"pre\">arg_joiner</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Func.arg_joiner\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Tréith aicme a léiríonn an carachtar a úsáidtear chun páirt a ghlacadh le liosta <code class=\"docutils literal notranslate\"><span class=\"pre\">léiritheach</span></code> le chéile. Réamhshocraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">',</span> <span class=\"pre\">'</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Func.arity\">\n<span class=\"sig-name descname\"><span class=\"pre\">arity</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Func.arity\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Tréith aicme a léiríonn líon na n-argóintí a nglacann an fheidhm leis. Má shocraítear an tréith seo agus má thugtar an fheidhm le líon difriúil nathanna, ardófar <code class=\"docutils literal notranslate\"><span class=\"pre\">TypeError</span></code>. Réamhshocraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Func.as_sql\">\n<span class=\"sig-name descname\"><span class=\"pre\">as_sql</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">compiler</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">connection</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">function</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">template</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">arg_joiner</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">extra_context</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Func.as_sql\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Gineann sé an blúire SQL don fheidhm bhunachar sonraí. Filleann sé tuple <code class=\"docutils literal notranslate\"><span class=\"pre\">(sql,</span> <span class=\"pre\">params)</span></code>, áit gurb é sql` an teaghrán SQL, agus params` an liosta nó an tiúpla de pharaiméadair fiosrúcháin.</p>\n<p>Ba chóir do na modhanna <code class=\"docutils literal notranslate\"><span class=\"pre\">as_vendor</span> <span class=\"pre\">()</span> <span class=\"pre\">``úsáid</span> <span class=\"pre\">a</span> <span class=\"pre\">bhaint</span> <span class=\"pre\">as</span> <span class=\"pre\">na</span> <span class=\"pre\">paraiméadair</span></code> feidhm <code class=\"docutils literal notranslate\"><span class=\"pre\">,</span> <span class=\"pre\">`teimpléad</span></code>, arg_joiner`, agus aon pharaiméadair <code class=\"docutils literal notranslate\"><span class=\"pre\">**extra_context</span></code> eile chun an SQL a shaincheapadh de réir mar is gá. Mar shampla:</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">django/db/samhlacha/feidhmeanna.</span> <span class=\"pre\">py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ConcatPair</span><span class=\"p\">(</span><span class=\"n\">Func</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n    <span class=\"n\">function</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;CONCAT&quot;</span>\n    <span class=\"o\">...</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">as_mysql</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">compiler</span><span class=\"p\">,</span> <span class=\"n\">connection</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">extra_context</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">as_sql</span><span class=\"p\">(</span>\n            <span class=\"n\">compiler</span><span class=\"p\">,</span>\n            <span class=\"n\">connection</span><span class=\"p\">,</span>\n            <span class=\"n\">function</span><span class=\"o\">=</span><span class=\"s2\">&quot;CONCAT_WS&quot;</span><span class=\"p\">,</span>\n            <span class=\"n\">template</span><span class=\"o\">=</span><span class=\"s2\">&quot;</span><span class=\"si\">%(function)s</span><span class=\"s2\">(&#39;&#39;, </span><span class=\"si\">%(expressions)s</span><span class=\"s2\">)&quot;</span><span class=\"p\">,</span>\n            <span class=\"o\">**</span><span class=\"n\">extra_context</span>\n        <span class=\"p\">)</span>\n</code></pre></figure>\n<p>Chun leochaileacht insteallta SQL a sheachaint, ní chóir go mbeadh ionchur úsáideora neamhiontaofa ag <code class=\"docutils literal notranslate\"><span class=\"pre\">extra_context</span></code> &lt;avoiding-sql-injection-in-query-expressions&gt;`: ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>mar go ndéantar na luachanna seo a idirphóladh isteach sa sreangán SQL seachas a rith mar pharaiméadair fiosrúcháin, áit a n-éalódh tiománaí bunachar sonraí iad.</p>\n</dd></dl>\n\n</dd></dl>\n\n<p>Is liosta de na nathanna seasaimh a chuirfear i bhfeidhm ar an bhfeidhm é an argóint * sainráitigh `. Déanfar na nathanna a thiontú go teaghráin, a chur le chéile le arg_joiner`, agus ansin idirphóilfear isteach sa teimpléad ``mar shealbhóir áite ``léirithe`.</p>\n<p>Is féidir le hargóintí seasaimh a bheith ina nathanna nó luachanna Python. Glactar leis gur tagairtí colún iad na teaghráin agus fillfear iad in abairtí <code class=\"docutils literal notranslate\"><span class=\"pre\">F</span> <span class=\"pre\">()</span> <span class=\"pre\">``agus</span> <span class=\"pre\">cuirfear</span> <span class=\"pre\">luachanna</span> <span class=\"pre\">eile</span> <span class=\"pre\">fillte</span> <span class=\"pre\">in</span> <span class=\"pre\">abairtí</span> <span class=\"pre\">``Luach</span> <span class=\"pre\">()</span></code>.</p>\n<p>Is iad na kwargs <code class=\"docutils literal notranslate\"><span class=\"pre\">**extra</span></code> péirí <code class=\"docutils literal notranslate\"><span class=\"pre\">eochair=luach</span></code> is féidir iad a ionghabháil isteach sa tréith <code class=\"docutils literal notranslate\"><span class=\"pre\">teimpléad</span> <span class=\"pre\">``.</span> <span class=\"pre\">Chun</span> <span class=\"pre\">leochaileacht</span> <span class=\"pre\">insteallta</span> <span class=\"pre\">SQL</span> <span class=\"pre\">a</span> <span class=\"pre\">sheachaint,</span> <span class=\"pre\">ní</span> <span class=\"pre\">chóir</span> <span class=\"pre\">go</span> <span class=\"pre\">mbeadh</span> <span class=\"pre\">ionchur</span> <span class=\"pre\">úsáideora</span> <span class=\"pre\">neamhion</span> <span class=\"pre\">&lt;avoiding-sql-injection-in-query-expressions&gt;taofa</span> <span class=\"pre\">ag</span> <span class=\"pre\">``extra</span></code>: ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>mar go ndéantar na luachanna seo a idirphóladh isteach sa sreang SQL seachas a rith mar pharaiméadair cheisteanna, áit a n-éalfadh tiománaí an bunachar sonraí iad.</p>\n<p>Is féidir na heochairfhocail <code class=\"docutils literal notranslate\"><span class=\"pre\">feidhm</span></code>, teimpléad`, agus <code class=\"docutils literal notranslate\"><span class=\"pre\">arg_joiner</span></code> a úsáid chun tréithe an ainm céanna a chur in ionad gan do rang féin a shainiú. :ref: is féidir <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>output_field &lt;output-field&gt;`a úsáid chun an cineál tuairisceáin a bhfuil súil leis a shainiú.</p>\n</section>\n<section id=\"aggregate-expressions\">\n<h3>Nathanna <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Comhiomlán () ``<a class=\"heading-anchor\" href=\"#aggregate-expressions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Is cás speisialta é abairt comhiomlán de a:ref: Func () abairt &lt;func-expressions&gt;`a chuireann in iúl don cheist go bhfuil clásal ``GROUP BY` ag teastáil. Tá gach ceann de na feidhmeanna:ref: comhiomlán &lt;aggregation-functions&gt;, cosúil le <code class=\"docutils literal notranslate\"><span class=\"pre\">Sum</span> <span class=\"pre\">()</span> <span class=\"pre\">``agus</span> <span class=\"pre\">``Count</span> <span class=\"pre\">()</span></code>, oidhreacht ó <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Comhiomlán () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>.</p>\n<p>Ós rud é gur abairtí agus nathanna fillte iad <code class=\"docutils literal notranslate\"><span class=\"pre\">Comhiomlán</span></code>, is féidir leat roinnt ríomhanna casta a léiriú:</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=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Count</span>\n\n<span class=\"n\">Company</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span>\n    <span class=\"n\">managers_required</span><span class=\"o\">=</span><span class=\"p\">(</span><span class=\"n\">Count</span><span class=\"p\">(</span><span class=\"s2\">&quot;num_employees&quot;</span><span class=\"p\">)</span> <span class=\"o\">/</span> <span class=\"mi\">4</span><span class=\"p\">)</span> <span class=\"o\">+</span> <span class=\"n\">Count</span><span class=\"p\">(</span><span class=\"s2\">&quot;num_managers&quot;</span><span class=\"p\">)</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p>Is é seo a leanas an API <code class=\"docutils literal notranslate\"><span class=\"pre\">Comhléad</span></code>:</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Aggregate\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">Aggregate</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">*</span></span><span class=\"n\"><span class=\"pre\">expressions</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">output_field</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">distinct</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">filter</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">default</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"o\"><span class=\"pre\">**</span></span><span class=\"n\"><span class=\"pre\">extra</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Aggregate\"><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.Aggregate.template\">\n<span class=\"sig-name descname\"><span class=\"pre\">template</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Aggregate.template\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Tréith aicme, mar shreang formáide, a chuireann síos ar an SQL a ghintear don chomhiomlán seo. Réamhshocraithe go <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>'% (function) s (% (difriúil) s% (abairtí) s) '<a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Aggregate.function\">\n<span class=\"sig-name descname\"><span class=\"pre\">function</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Aggregate.function\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Tréith aicme a dhéanann cur síos ar an bhfeidhm chomhiomlán a ghinteofar. Go sonrach, déanfar an feidhm ``idirphóilte mar shealbhóir an ``feidhmi` laistigh de: attr: teimpléad. Réamhshocraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Aggregate.window_compatible\">\n<span class=\"sig-name descname\"><span class=\"pre\">window_compatible</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Aggregate.window_compatible\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Réamhshocraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> ós rud é gur féidir an chuid is mó de na feidhmeanna comhiomlána a úsáid mar an abairt foinse in:class: ~Django.db.Models.Expressions.Window.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Aggregate.allow_distinct\">\n<span class=\"sig-name descname\"><span class=\"pre\">allow_distinct</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Aggregate.allow_distinct\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Tréith aicme a chinneann cibé an gceadaíonn an fheidhm chomhiomlán seo argóint eochairfhocal “difriúil” a rith nó nach bhfuil. Má tá sé socraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> (réamhshocraithe), ardaítear <code class=\"docutils literal notranslate\"><span class=\"pre\">TypeError</span></code> má chuirtear <code class=\"docutils literal notranslate\"><span class=\"pre\">Distinct=True</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Aggregate.empty_result_set_value\">\n<span class=\"sig-name descname\"><span class=\"pre\">empty_result_set_value</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Aggregate.empty_result_set_value\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Réamhshocraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> ós rud é go mbíonn NULL` mar thoradh ar an gcuid is mó de na feidhmeanna comhiomlána nuair a chuirtear i bhfeidhm ar shraith torthaí folamh.</p>\n</dd></dl>\n\n</dd></dl>\n\n<p>Is féidir leis na hargóintí seasaimh <code class=\"docutils literal notranslate\"><span class=\"pre\">léiritheach</span></code> abairtí, claochruithe an réimse samhail, nó ainmneacha réimsí samhail a bheith san áireamh. Déanfar iad a thiontú go sreang agus úsáidfear iad mar shealbhóir áit <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>léiritheoir` laistigh den teimpléad.</p>\n<p>Cinneann an argóint <code class=\"docutils literal notranslate\"><span class=\"pre\">difriúil</span> <span class=\"pre\">``cibé</span> <span class=\"pre\">an</span> <span class=\"pre\">gcaithfear</span> <span class=\"pre\">an</span> <span class=\"pre\">fheidhm</span> <span class=\"pre\">chomhiomlán</span> <span class=\"pre\">a</span> <span class=\"pre\">ghairm</span> <span class=\"pre\">nó</span> <span class=\"pre\">nach</span> <span class=\"pre\">bhfuil</span> <span class=\"pre\">i</span> <span class=\"pre\">gcás</span> <span class=\"pre\">gach</span> <span class=\"pre\">luach</span> <span class=\"pre\">ar</span> <span class=\"pre\">leith</span> <span class=\"pre\">``léiritheach</span></code> (nó tacar luachanna, le haghaidh iolracha <code class=\"docutils literal notranslate\"><span class=\"pre\">léiritheach</span></code>). Ní thacaítear leis an argóint ach ar chomhiomláin a bhfuil: attr: ~Aggregate.allow_Distinct socraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p>\n<p>Tógann an argóint <code class=\"docutils literal notranslate\"><span class=\"pre\">scagair</span></code> a:class: Q rud `a úsáidtear chun na sraithe &lt;django.db.models.Q&gt;anna atá comhiomlánaithe a scagadh. Féach: ref: `comhiomlánú coinníollach agus:ref: filtering-on-annotations mar shampla úsáid.</p>\n<p>Glacann an argóint default` luach a chuirfear in éineacht leis an comhiomlán chuig:class: ~Django.db.Models.Functions.Coalesce. Tá sé seo úsáideach chun luach atá le tabhairt ar ais seachas <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code> a shonrú nuair nach bhfuil aon iontrálacha sa tacar fiosrúcháin (nó an ghrúpáil).</p>\n<p>Is iad na kwargs <code class=\"docutils literal notranslate\"><span class=\"pre\">**extra</span></code> péirí <code class=\"docutils literal notranslate\"><span class=\"pre\">eochair=luach</span></code> is féidir iad a ionghabháil isteach sa tréith <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>teimpléad <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>.</p>\n</section>\n<section id=\"creating-your-own-aggregate-functions\">\n<h3>Do Feidhmeanna Comhiomlánacha féin a<a class=\"heading-anchor\" href=\"#creating-your-own-aggregate-functions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Is féidir leat do fheidhmeanna comhiomlána féin a chruthú freisin. Ar a laghad, ní mór duit <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>feidhm <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>a shainiú, ach is féidir leat an SQL a ghintear a shaincheapadh go hiomlán freisin. Seo sampla gairid:</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=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Aggregate</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Sum</span><span class=\"p\">(</span><span class=\"n\">Aggregate</span><span class=\"p\">):</span>\n    <span class=\"c1\"># Supports SUM(ALL field).</span>\n    <span class=\"n\">function</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;SUM&quot;</span>\n    <span class=\"n\">template</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;</span><span class=\"si\">%(function)s</span><span class=\"s2\">(</span><span class=\"si\">%(all_values)s%(expressions)s</span><span class=\"s2\">)&quot;</span>\n    <span class=\"n\">allow_distinct</span> <span class=\"o\">=</span> <span class=\"kc\">False</span>\n    <span class=\"n\">arity</span> <span class=\"o\">=</span> <span class=\"mi\">1</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">expression</span><span class=\"p\">,</span> <span class=\"n\">all_values</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">extra</span><span class=\"p\">):</span>\n        <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"n\">expression</span><span class=\"p\">,</span> <span class=\"n\">all_values</span><span class=\"o\">=</span><span class=\"s2\">&quot;ALL &quot;</span> <span class=\"k\">if</span> <span class=\"n\">all_values</span> <span class=\"k\">else</span> <span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span> <span class=\"o\">**</span><span class=\"n\">extra</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"value-expressions\">\n<h3>Nathanna <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Luach () ``<a class=\"heading-anchor\" href=\"#value-expressions\"><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.Value\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">Value</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">output_field</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Value\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Léiríonn réad <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Luach () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>an chomhpháirt is lú is féidir de abairt: luach simplí. Nuair is gá duit luach sláimhir, boolean nó sreang a léiriú laistigh de abairt, is féidir leat an luach sin a fhilleadh laistigh de <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>Luach () <a href=\"#id7\"><span class=\"problematic\" id=\"id8\">``</span></a>.</p>\n<p>Is annamh a bheidh ort <code class=\"docutils literal notranslate\"><span class=\"pre\">Luach</span> <span class=\"pre\">()</span> <span class=\"pre\">``a</span> <span class=\"pre\">úsáid</span> <span class=\"pre\">go</span> <span class=\"pre\">díreach.</span> <span class=\"pre\">Nuair</span> <span class=\"pre\">a</span> <span class=\"pre\">scríobhann</span> <span class=\"pre\">tú</span> <span class=\"pre\">an</span> <span class=\"pre\">abairt</span> <span class=\"pre\">``F</span> <span class=\"pre\">('field')</span> <span class=\"pre\">+</span> <span class=\"pre\">1</span></code>, fillteann Django an <code class=\"docutils literal notranslate\"><span class=\"pre\">1</span></code> go hinneach i <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Luach () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>, ag ligean luachanna simplí a úsáid i nathanna níos casta. Beidh ort <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>Luach () <a href=\"#id7\"><span class=\"problematic\" id=\"id8\">``</span></a>a úsáid nuair is mian leat teaghrán a chur chuig abairt. Léirmhíníonn an chuid is mó de na nathanna argóint teaghrán mar ainm réimse, cosúil le <a href=\"#id9\"><span class=\"problematic\" id=\"id10\">``</span></a>Lower ('ainm') <a href=\"#id11\"><span class=\"problematic\" id=\"id12\">`</span></a>.</p>\n<p>Déanann an argóint <code class=\"docutils literal notranslate\"><span class=\"pre\">luach</span></code> cur síos ar an luach atá le cur san áireamh sa abairt, mar shampla <code class=\"docutils literal notranslate\"><span class=\"pre\">`1</span></code>, True`, nó <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>. Tá a fhios ag Django conas na luachanna Python seo a thiontú ina gcineál bunachar sonraí comhfhreag</p>\n<p>Má shonraítear no:ref: output_field &lt;output-field&gt;, déanfar é a thabhairt chun cinn ó chineál an luach` a chuirtear ar fáil do go leor cineálacha coitianta. Mar shampla, ag rith sampla de:py:class: datetime.datetime mar value` réamhshocraithe <code class=\"docutils literal notranslate\"><span class=\"pre\">output_field</span></code> chuig:class: ~django.db.models.DateTimeField.</p>\n</section>\n<section id=\"expressionwrapper-expressions\">\n<h3>Nathanna <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>ExpressionWrapper () ``<a class=\"heading-anchor\" href=\"#expressionwrapper-expressions\"><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.ExpressionWrapper\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">ExpressionWrapper</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">expression</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">output_field</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.ExpressionWrapper\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>&lt;output-field&gt;Tá <code class=\"docutils literal notranslate\"><span class=\"pre\">ExpressionWrapper</span></code> timpeall ar abairt eile agus soláthraíonn sé rochtain ar airíonna, mar shampla:ref: output_field `, nach mbeadh ar fáil ar abairtí eile. Tá ``ExpressionWrapper` riachtanach nuair a úsáidtear uimhríocht ar abairtí <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>F () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>le cineálacha éagsúla mar a thuairiscítear in:ref: using-f-with-annotations.</p>\n<aside class=\"admonition-database-casting-not-performed admonition\">\n<p class=\"admonition-title\">Database casting not performed</p>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">ExpressionWrapper</span></code> only sets the output field for the ORM and does not\nperform any database-level casting. To ensure a specific type is returned\nfrom the database, use <a class=\"reference internal\" href=\"/ga/5.2/ref/models/database-functions/#django.db.models.functions.Cast\" title=\"django.db.models.functions.Cast\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Cast</span></code></a> instead.</p>\n</aside>\n</section>\n<section id=\"conditional-expressions\">\n<h3>Nathanna coinníollach<a class=\"heading-anchor\" href=\"#conditional-expressions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Ligeann nathanna coinníollach duit úsáid:keyword: if `... :keyword: `elif... :keyword: loighic else i gceisteanna. Tacaíonn Django le nathanna SQL <code class=\"docutils literal notranslate\"><span class=\"pre\">CASE</span></code> go dúchasach. Le haghaidh tuilleadh sonraí féach:doc: conditional-expressions.</p>\n</section>\n<section id=\"subquery-expressions\">\n<h3>Nathanna <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Subquest () ``<a class=\"heading-anchor\" href=\"#subquery-expressions\"><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.Subquery\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">Subquery</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">queryset</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">output_field</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Subquery\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Is féidir leat fo-cheist sainráite a chur le <code class=\"docutils literal notranslate\"><span class=\"pre\">QuerySet</span></code> ag baint úsáide as an abairt <code class=\"docutils literal notranslate\"><span class=\"pre\">SubQuery</span></code>.</p>\n<p>Mar shampla, chun gach post a anótáil le seoladh ríomhphoist údar an trácht is nua ar an bpost sin:</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=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">OuterRef</span><span class=\"p\">,</span> <span class=\"n\">Subquery</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">newest</span> <span class=\"o\">=</span> <span class=\"n\">Comment</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">post</span><span class=\"o\">=</span><span class=\"n\">OuterRef</span><span class=\"p\">(</span><span class=\"s2\">&quot;pk&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span><span class=\"n\">order_by</span><span class=\"p\">(</span><span class=\"s2\">&quot;-created_at&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Post</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span><span class=\"n\">newest_commenter_email</span><span class=\"o\">=</span><span class=\"n\">Subquery</span><span class=\"p\">(</span><span class=\"n\">newest</span><span class=\"o\">.</span><span class=\"n\">values</span><span class=\"p\">(</span><span class=\"s2\">&quot;email&quot;</span><span class=\"p\">)[:</span><span class=\"mi\">1</span><span class=\"p\">]))</span>\n</code></pre></div>\n<p>Ar PostgreSQL, tá cuma ar an 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=\"w\"> </span><span class=\"ss\">&quot;post&quot;</span><span class=\"p\">.</span><span class=\"ss\">&quot;id&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"p\">(</span>\n<span class=\"w\">    </span><span class=\"k\">SELECT</span><span class=\"w\"> </span><span class=\"n\">U0</span><span class=\"p\">.</span><span class=\"ss\">&quot;email&quot;</span>\n<span class=\"w\">    </span><span class=\"k\">FROM</span><span class=\"w\"> </span><span class=\"ss\">&quot;comment&quot;</span><span class=\"w\"> </span><span class=\"n\">U0</span>\n<span class=\"w\">    </span><span class=\"k\">WHERE</span><span class=\"w\"> </span><span class=\"n\">U0</span><span class=\"p\">.</span><span class=\"ss\">&quot;post_id&quot;</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"ss\">&quot;post&quot;</span><span class=\"p\">.</span><span class=\"ss\">&quot;id&quot;</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">ORDER</span><span class=\"w\"> </span><span class=\"k\">BY</span><span class=\"w\"> </span><span class=\"n\">U0</span><span class=\"p\">.</span><span class=\"ss\">&quot;created_at&quot;</span><span class=\"w\"> </span><span class=\"k\">DESC</span><span class=\"w\"> </span><span class=\"k\">LIMIT</span><span class=\"w\"> </span><span class=\"mi\">1</span>\n<span class=\"p\">)</span><span class=\"w\"> </span><span class=\"k\">AS</span><span class=\"w\"> </span><span class=\"ss\">&quot;newest_commenter_email&quot;</span><span class=\"w\"> </span><span class=\"k\">FROM</span><span class=\"w\"> </span><span class=\"ss\">&quot;post&quot;</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Tá na samplaí sa chuid seo deartha chun a thaispeáint conas iallach a chur ar Django focheist a fhorghníomhú. I gcásanna áirithe d'fhéadfadh sé a bheith indéanta tacar ceisteanna coibhéiseach a scríobh a dhéanann an tasc céanna níos soiléire nó níos éifeachtaí.</p>\n</aside>\n<section id=\"referencing-columns-from-the-outer-queryset\">\n<h4>Tagairt do cholúin ón tacar ceisteanna seachtrach<a class=\"heading-anchor\" href=\"#referencing-columns-from-the-outer-queryset\"><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.OuterRef\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">OuterRef</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">field</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.OuterRef\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Úsáid <code class=\"docutils literal notranslate\"><span class=\"pre\">OuterRef</span></code> nuair is gá le tacar ceisteanna i <code class=\"docutils literal notranslate\"><span class=\"pre\">Focheiste</span></code> tagairt a dhéanamh do réimse ón bhfiosrú seachtrach nó a chlaochlú. Feidhmíonn sé cosúil le léiriú: aicme: F ach amháin nach ndéantar an seiceáil chun a fheiceáil an dtagraíonn sé do réimse bailí go dtí go réitear an tacar ceisteanna seachtrach.</p>\n<p>Féadfar cásanna <code class=\"docutils literal notranslate\"><span class=\"pre\">OuterRef</span></code> a úsáid i gcomhar le cásanna neadaithe de <code class=\"docutils literal notranslate\"><span class=\"pre\">Subcheiste</span></code> chun tagairt a dhéanamh do thacar fiosrúcháin ina bhfuil nach é an tuismitheoir láithreach. Mar shampla, caithfeadh an tacar ceisteanna seo a bheith laistigh de phéire neadaithe cásanna <code class=\"docutils literal notranslate\"><span class=\"pre\">Subcheiste</span></code> chun réiteach i gceart:</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=\"n\">Book</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">author</span><span class=\"o\">=</span><span class=\"n\">OuterRef</span><span class=\"p\">(</span><span class=\"n\">OuterRef</span><span class=\"p\">(</span><span class=\"s2\">&quot;pk&quot;</span><span class=\"p\">)))</span>\n</code></pre></div>\n</section>\n<section id=\"limiting-a-subquery-to-a-single-column\">\n<h4>Focheisteanna a theorannú go colún amháin<a class=\"heading-anchor\" href=\"#limiting-a-subquery-to-a-single-column\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Tá amanna ann nuair a chaithfear colún amháin a thabhairt ar ais ó <code class=\"docutils literal notranslate\"><span class=\"pre\">Subcheiste</span></code>, mar shampla, chun <code class=\"docutils literal notranslate\"><span class=\"pre\">Subcheiste</span></code> a úsáid mar sprioc chuardaigh <code class=\"docutils literal notranslate\"><span class=\"pre\">__in</span></code>. Chun gach trácht ar phoist a fhoilsíodh laistigh den lá deireanach a thabhairt ar ais:</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=\"w\"> </span><span class=\"nn\">datetime</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">timedelta</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">timezone</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">one_day_ago</span> <span class=\"o\">=</span> <span class=\"n\">timezone</span><span class=\"o\">.</span><span class=\"n\">now</span><span class=\"p\">()</span> <span class=\"o\">-</span> <span class=\"n\">timedelta</span><span class=\"p\">(</span><span class=\"n\">days</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">posts</span> <span class=\"o\">=</span> <span class=\"n\">Post</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">published_at__gte</span><span class=\"o\">=</span><span class=\"n\">one_day_ago</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Comment</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">post__in</span><span class=\"o\">=</span><span class=\"n\">Subquery</span><span class=\"p\">(</span><span class=\"n\">posts</span><span class=\"o\">.</span><span class=\"n\">values</span><span class=\"p\">(</span><span class=\"s2\">&quot;pk&quot;</span><span class=\"p\">)))</span>\n</code></pre></div>\n<p>Sa chás seo, ní mór don fho-cheist a úsáid: meth: ~.queryset.values chun colún amháin a thabhairt ar ais: príomh-eochair an phoist.</p>\n</section>\n<section id=\"limiting-the-subquery-to-a-single-row\">\n<h4>An fho-cheist a theorannú go sraith amháin<a class=\"heading-anchor\" href=\"#limiting-the-subquery-to-a-single-row\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Chun fo-cheist a chosc ó iliomad sraitheanna a thabhairt ar ais, úsáidtear slisnas (<code class=\"docutils literal notranslate\"><span class=\"pre\">[:1]</span></code>) den tacar fiosrúcháin:</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=\"n\">subquery</span> <span class=\"o\">=</span> <span class=\"n\">Subquery</span><span class=\"p\">(</span><span class=\"n\">newest</span><span class=\"o\">.</span><span class=\"n\">values</span><span class=\"p\">(</span><span class=\"s2\">&quot;email&quot;</span><span class=\"p\">)[:</span><span class=\"mi\">1</span><span class=\"p\">])</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Post</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span><span class=\"n\">newest_commenter_email</span><span class=\"o\">=</span><span class=\"n\">subquery</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Sa chás seo, ní mór don fho-cheist ach colún aon* agus* sraith amháin a thabhairt ar ais: seoladh ríomhphoist an trácht is déanaí a cruthaíodh.</p>\n<p>(Teipfeadh ag baint úsáid:Meth: ~.querySet.get in ionad slisnas toisc nach féidir an <code class=\"docutils literal notranslate\"><span class=\"pre\">OuterRef</span></code> a réiteach go dtí go n-úsáidfear an tacar fiosrúcháin laistigh de <code class=\"docutils literal notranslate\"><span class=\"pre\">Subcheiste</span></code>.)</p>\n</section>\n<section id=\"exists-subqueries\">\n<h4>Focheisteanna <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Tá ann () ``<a class=\"heading-anchor\" href=\"#exists-subqueries\"><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.Exists\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">Exists</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">queryset</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Exists\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Is fo-aicme <code class=\"docutils literal notranslate\"><span class=\"pre\">`Subcheiste</span></code> é Exists` a úsáideann ráiteas SQL <code class=\"docutils literal notranslate\"><span class=\"pre\">EXISTS</span></code>. I go leor cásanna feidhmeoidh sé níos fearr ná fo-cheist ós rud é go bhfuil an bunachar sonraí in ann stop a chur le meastóireacht ar an bhfo-cheist nuair a aimsítear an chéad tsraith meaitseála.</p>\n<p>Mar shampla, chun gach post a anótáil le cibé an bhfuil trácht aige laistigh den lá deireanach nó nach bhfuil:</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=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Exists</span><span class=\"p\">,</span> <span class=\"n\">OuterRef</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">datetime</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">timedelta</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">timezone</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">one_day_ago</span> <span class=\"o\">=</span> <span class=\"n\">timezone</span><span class=\"o\">.</span><span class=\"n\">now</span><span class=\"p\">()</span> <span class=\"o\">-</span> <span class=\"n\">timedelta</span><span class=\"p\">(</span><span class=\"n\">days</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">recent_comments</span> <span class=\"o\">=</span> <span class=\"n\">Comment</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">post</span><span class=\"o\">=</span><span class=\"n\">OuterRef</span><span class=\"p\">(</span><span class=\"s2\">&quot;pk&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    <span class=\"n\">created_at__gte</span><span class=\"o\">=</span><span class=\"n\">one_day_ago</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Post</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span><span class=\"n\">recent_comment</span><span class=\"o\">=</span><span class=\"n\">Exists</span><span class=\"p\">(</span><span class=\"n\">recent_comments</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>Ar PostgreSQL, tá cuma ar an 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=\"w\"> </span><span class=\"ss\">&quot;post&quot;</span><span class=\"p\">.</span><span class=\"ss\">&quot;id&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"ss\">&quot;post&quot;</span><span class=\"p\">.</span><span class=\"ss\">&quot;published_at&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"k\">EXISTS</span><span class=\"p\">(</span>\n<span class=\"w\">    </span><span class=\"k\">SELECT</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"k\">as</span><span class=\"w\"> </span><span class=\"ss\">&quot;a&quot;</span>\n<span class=\"w\">    </span><span class=\"k\">FROM</span><span class=\"w\"> </span><span class=\"ss\">&quot;comment&quot;</span><span class=\"w\"> </span><span class=\"n\">U0</span>\n<span class=\"w\">    </span><span class=\"k\">WHERE</span><span class=\"w\"> </span><span class=\"p\">(</span>\n<span class=\"w\">        </span><span class=\"n\">U0</span><span class=\"p\">.</span><span class=\"ss\">&quot;created_at&quot;</span><span class=\"w\"> </span><span class=\"o\">&gt;=</span><span class=\"w\"> </span><span class=\"n\">YYYY</span><span class=\"o\">-</span><span class=\"n\">MM</span><span class=\"o\">-</span><span class=\"n\">DD</span><span class=\"w\"> </span><span class=\"n\">HH</span><span class=\"p\">:</span><span class=\"n\">MM</span><span class=\"p\">:</span><span class=\"n\">SS</span><span class=\"w\"> </span><span class=\"k\">AND</span>\n<span class=\"w\">        </span><span class=\"n\">U0</span><span class=\"p\">.</span><span class=\"ss\">&quot;post_id&quot;</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"ss\">&quot;post&quot;</span><span class=\"p\">.</span><span class=\"ss\">&quot;id&quot;</span>\n<span class=\"w\">    </span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"k\">LIMIT</span><span class=\"w\"> </span><span class=\"mi\">1</span>\n<span class=\"p\">)</span><span class=\"w\"> </span><span class=\"k\">AS</span><span class=\"w\"> </span><span class=\"ss\">&quot;recent_comment&quot;</span><span class=\"w\"> </span><span class=\"k\">FROM</span><span class=\"w\"> </span><span class=\"ss\">&quot;post&quot;</span>\n</code></pre></div>\n<p>Ní gá iallach ar <code class=\"docutils literal notranslate\"><span class=\"pre\">Exists</span></code> tagairt a dhéanamh do cholún amháin, ós rud é go ndéantar na colúin a chaitheamh agus cuirtear toradh boolean ar ais. Ar an gcaoi chéanna, ós rud é nach bhfuil ordú tábhachtach laistigh de fhocheistiú SQL EXISTS agus nach ndéanfadh sé ach feidhmíocht a laghdú, baintear é go huathoibríoch.</p>\n<p>Is féidir leat ceist a dhéanamh ag baint úsáide as <code class=\"docutils literal notranslate\"><span class=\"pre\">NOT</span> <span class=\"pre\">EXISTS</span></code> le <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>~Exists () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>.</p>\n</section>\n<section id=\"filtering-on-a-subquery-or-exists-expressions\">\n<h4>Scagadh ar nathanna <code class=\"docutils literal notranslate\"><span class=\"pre\">Focheist</span> <span class=\"pre\">()</span></code> nó <code class=\"docutils literal notranslate\"><span class=\"pre\">Existents</span> <span class=\"pre\">()</span></code> `<a class=\"heading-anchor\" href=\"#filtering-on-a-subquery-or-exists-expressions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Is féidir <code class=\"docutils literal notranslate\"><span class=\"pre\">Subquery</span> <span class=\"pre\">()</span> <span class=\"pre\">``a</span> <span class=\"pre\">thugann</span> <span class=\"pre\">luach</span> <span class=\"pre\">boolean</span> <span class=\"pre\">agus</span> <span class=\"pre\">``Existents</span> <span class=\"pre\">()</span></code> a úsáid mar <code class=\"docutils literal notranslate\"><span class=\"pre\">coinníoll</span></code> in:class: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>~django.db.Models.Expressions.When <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>abairtí, nó chun tacar fiosrúcháin a scagadh go díreach:</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=\"n\">recent_comments</span> <span class=\"o\">=</span> <span class=\"n\">Comment</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"o\">...</span><span class=\"p\">)</span>  <span class=\"c1\"># From above</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Post</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">Exists</span><span class=\"p\">(</span><span class=\"n\">recent_comments</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>Cinnteoidh sé seo nach gcuirfear an fo-cheist leis na colúin <code class=\"docutils literal notranslate\"><span class=\"pre\">SELECT</span></code>, rud a d'fhéadfadh feidhmíocht níos fearr a bheith mar thoradh air.</p>\n</section>\n<section id=\"using-aggregates-within-a-subquery-expression\">\n<h4>Ag baint úsáide as comhiomlánaithe laistigh de abairt <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Focheisteanna `<a class=\"heading-anchor\" href=\"#using-aggregates-within-a-subquery-expression\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Is féidir comhiomláin a úsáid laistigh de <code class=\"docutils literal notranslate\"><span class=\"pre\">SubQuery</span></code>, ach teastaíonn teaglaim shonrach uathu de:meth: ~.queryset.filter, :meth: ~.queryset.values, agus:meth: ~.queryset.annotate chun an grúpáil fo-cheisteanna a chur i gceart.</p>\n<p>Ag glacadh leis go bhfuil réimse <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>fad <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>ag an dá mhúnla, chun poist a aimsiú ina bhfuil fad an phoist níos mó ná fad iomlán na dtuairimí comhcheangailte go léir:</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=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">OuterRef</span><span class=\"p\">,</span> <span class=\"n\">Subquery</span><span class=\"p\">,</span> <span class=\"n\">Sum</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">comments</span> <span class=\"o\">=</span> <span class=\"n\">Comment</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">post</span><span class=\"o\">=</span><span class=\"n\">OuterRef</span><span class=\"p\">(</span><span class=\"s2\">&quot;pk&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span><span class=\"n\">order_by</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">values</span><span class=\"p\">(</span><span class=\"s2\">&quot;post&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">total_comments</span> <span class=\"o\">=</span> <span class=\"n\">comments</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span><span class=\"n\">total</span><span class=\"o\">=</span><span class=\"n\">Sum</span><span class=\"p\">(</span><span class=\"s2\">&quot;length&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span><span class=\"n\">values</span><span class=\"p\">(</span><span class=\"s2\">&quot;total&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Post</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">length__gt</span><span class=\"o\">=</span><span class=\"n\">Subquery</span><span class=\"p\">(</span><span class=\"n\">total_comments</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>Cuireann an “scagaire (...)” tosaigh teorainn leis an bhfocheistiú go dtí na paraiméadair ábhartha. Baineann <code class=\"docutils literal notranslate\"><span class=\"pre\">order_by</span> <span class=\"pre\">()</span> <span class=\"pre\">``an</span> <span class=\"pre\">réamhshocraithe:attr:</span> <span class=\"pre\">`~Django.db.Models.Options.Ordering`</span> <span class=\"pre\">(más</span> <span class=\"pre\">ann)</span> <span class=\"pre\">ar</span> <span class=\"pre\">an</span> <span class=\"pre\">tsamhail</span> <span class=\"pre\">``Comment</span></code>. Comhiomlánann <code class=\"docutils literal notranslate\"><span class=\"pre\">luachanna</span> <span class=\"pre\">('post')</span> <span class=\"pre\">``tuairimí</span> <span class=\"pre\">le</span> <span class=\"pre\">``Post</span></code>. Faoi dheireadh, déanann <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>annotate (...) <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>an comhiomlánú. Tá an t-ord ina gcuirtear na modhanna ceisteanna seo i bhfeidhm tábhachtach. Sa chás seo, ós rud é go gcaithfear an fo-cheist a bheith teoranta do cholún amháin, tá gá le luachanna ('iomlán') `.</p>\n<p>Is é seo an t-aon bhealach chun comhiomlánú a dhéanamh laistigh de <code class=\"docutils literal notranslate\"><span class=\"pre\">SubQuery</span></code>, mar a úsáideann: meth: ~.queryset.aggregate iarracht an tacar ceisteanna a mheas (agus má tá <code class=\"docutils literal notranslate\"><span class=\"pre\">OuterRef</span></code> ann, ní féidir é seo a réiteach).</p>\n</section>\n</section>\n<section id=\"raw-sql-expressions\">\n<h3>Nathanna amh SQL<a class=\"heading-anchor\" href=\"#raw-sql-expressions\"><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.expressions.RawSQL\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">RawSQL</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">sql</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">params</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">output_field</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.expressions.RawSQL\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Uaireanta ní féidir le nathanna bunachar sonraí clásal casta <code class=\"docutils literal notranslate\"><span class=\"pre\">WHERE</span></code> a chur in iúl go héasca. Sna cásanna imeall seo, bain úsáid as an abairt <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Rawsql`. Mar shampla:</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=\"w\"> </span><span class=\"nn\">django.db.models.expressions</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">RawSQL</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">queryset</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span><span class=\"n\">val</span><span class=\"o\">=</span><span class=\"n\">RawSQL</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> <span class=\"p\">(</span><span class=\"n\">param</span><span class=\"p\">,)))</span>\n</code></pre></div>\n<p>B'fhéidir nach mbeidh na cuardaigh breise seo iniompartha d'innill bhunachar sonraí éagsúla (toisc go bhfuil cód SQL á scríobh go sainráite agat) agus sáraíonn tú prionsabal DRY, mar sin ba cheart duit iad a sheachaint más féidir.</p>\n<p>Is féidir nathanna <code class=\"docutils literal notranslate\"><span class=\"pre\">Rawsql</span></code> a úsáid freisin mar sprioc scagairí <code class=\"docutils literal notranslate\"><span class=\"pre\">__in</span></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><span class=\"n\">queryset</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">id__in</span><span class=\"o\">=</span><span class=\"n\">RawSQL</span><span class=\"p\">(</span><span class=\"s2\">&quot;select id from sometable where col = </span><span class=\"si\">%s</span><span class=\"s2\">&quot;</span><span class=\"p\">,</span> <span class=\"p\">(</span><span class=\"n\">param</span><span class=\"p\">,)))</span>\n</code></pre></div>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Warning</p>\n<p>Chun cosaint a dhéanamh ar <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>ionsaithe insteallta SQL <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>_ &lt; <a class=\"reference external\" href=\"https://en.wikipedia.org/wiki/SQL_injection\">https://en.wikipedia.org/wiki/SQL_injection</a>&gt;, ní mór duit éalú aon pharaiméadair is féidir leis an úsáideoir a rialú trí <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">`</span></a>params' a úsáid. Is argóint riachtanach é <a href=\"#id7\"><span class=\"problematic\" id=\"id8\">`</span></a>params' chun iallach ort a admháil nach bhfuil tú ag idirphóiriú do SQL le sonraí a sholáthraíonn an úsáideoir.</p>\n<p>Ní mór duit sealbhóirí áiteanna a lua sa teaghrán SQL freisin. Tá an sampla seo leochaileach do instealladh SQL mar gheall ar na luachana timpeall <code class=\"docutils literal notranslate\"><span class=\"pre\">%s</span></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=\"n\">RawSQL</span><span class=\"p\">(</span><span class=\"s2\">&quot;select col from sometable where othercol = &#39;</span><span class=\"si\">%s</span><span class=\"s2\">&#39;&quot;</span><span class=\"p\">)</span>  <span class=\"c1\"># unsafe!</span>\n</code></pre></div>\n<p>&lt;sql-injection-protection&gt;Is féidir leat tuilleadh a léamh faoin gcaoi a n-oibríonn Django's:ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>Cosaint insteallta SQL <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>.</p>\n</aside>\n</section>\n<section id=\"window-functions\">\n<h3>Feidhmeanna fuinn<a class=\"heading-anchor\" href=\"#window-functions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Soláthraíonn feidhmeanna fuinneoige bealach chun feidhmeanna a chur i bhfeidhm ar Murab ionann agus gnáthfheidhm chomhiomlánaithe a ríomhaíonn toradh deiridh do gach tacar a shainmhíníonn an grúpa ag, oibríonn feidhmeanna fuinneoige ar:ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>frámaí &lt;window-frames&gt;`agus deighiltí, agus ríomhaíonn siad an toradh do gach sraith.</p>\n<p>Is féidir leat fuinneoga iolracha a shonrú san fhiosrúchán céanna a bheadh i Django ORM comhionann le nathanna iolracha a áireamh in a:doc: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>Query&lt;/topics/db/aggregation&gt; Set.annotate () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>glao. Ní úsáideann an ORM fuinneoga ainmnithe, ina ionad sin tá siad mar chuid de na colúin roghnaithe.</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.expressions.Window\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">Window</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">expression</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">partition_by</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">order_by</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">frame</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">output_field</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.expressions.Window\"><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.expressions.Window.template\">\n<span class=\"sig-name descname\"><span class=\"pre\">template</span></span><a class=\"heading-anchor\" href=\"#django.db.models.expressions.Window.template\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Réamhshocraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">%</span> <span class=\"pre\">(abairt)</span> <span class=\"pre\">s</span> <span class=\"pre\">OVER</span> <span class=\"pre\">(%</span> <span class=\"pre\">(window)</span> <span class=\"pre\">s)</span> <span class=\"pre\">`.</span> <span class=\"pre\">Mura</span> <span class=\"pre\">gcuirtear</span> <span class=\"pre\">ach</span> <span class=\"pre\">an</span> <span class=\"pre\">argóint</span> <span class=\"pre\">``léirithe</span></code> ar fáil, beidh clásal na fuinneoige bán.</p>\n</dd></dl>\n\n</dd></dl>\n\n<p>Is é an rang <code class=\"docutils literal notranslate\"><span class=\"pre\">Windows</span> <span class=\"pre\">``an</span> <span class=\"pre\">príomh-abairt</span> <span class=\"pre\">do</span> <span class=\"pre\">chlásal</span> <span class=\"pre\">``OVER</span></code>.</p>\n<p>Is é an argóint <code class=\"docutils literal notranslate\"><span class=\"pre\">léirithe</span></code> a: ref: feidhm fuinneog `&lt;window-functions&gt;, an:ref: `feidhm chomhiomlán, nó abairt atá comhoiriúnach i gclá &lt;aggregation-functions&gt;sal fuinneoige.</p>\n<p>Glacann an argóint partition_by` le abairt nó le seicheamh abairtí (ba chóir ainmneacha colún a fhilleadh i réad <code class=\"docutils literal notranslate\"><span class=\"pre\">F</span></code>) a rialaíonn deighilt na sraitheanna. Déanann deighilt a chúngú cé na sraitheanna a úsáidtear chun an tacar torthaí a ríomh.</p>\n<p>Sonraítear an:ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>output_field &lt;output-field&gt;`mar argóint nó leis an abairt.</p>\n<p>Glacann an argóint order_by` le abairt ar féidir leat glao:meth: ~django.db.models.expression.asc agus:meth: ~django.db.models.expression.desc, teaghrán ainm réimse (le réimír roghnach <code class=\"docutils literal notranslate\"><span class=\"pre\">”</span> <span class=\"pre\">-&quot;</span></code> a léiríonn ord íslitheach), nó liosta teaghráin agus/nó nathanna. Rialaíonn an t-ordú an t-ord ina gcuirtear an abairt i bhfeidhm. Mar shampla, má chuireann tú suim thar na sraitheanna i ndeighilt, is é an chéad toradh luach an chéad shraith, is é an dara ceann suim den chéad agus an dara sraith.</p>\n<p>Sonraíonn an paraiméadar <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>fráma <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>na sraitheanna eile ba chóir a úsáid sa ríomh. Féach: Ref: fhrámaí fuinneog le haghaidh sonraí.</p>\n<p>Mar shampla, chun anótáil a dhéanamh ar gach scannán leis an meánrátáil do na scannáin ag an stiúideo céanna sa seánra agus sa bhliain scaoilte céanna:</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=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Avg</span><span class=\"p\">,</span> <span class=\"n\">F</span><span class=\"p\">,</span> <span class=\"n\">Window</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Movie</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">avg_rating</span><span class=\"o\">=</span><span class=\"n\">Window</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>        <span class=\"n\">expression</span><span class=\"o\">=</span><span class=\"n\">Avg</span><span class=\"p\">(</span><span class=\"s2\">&quot;rating&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>        <span class=\"n\">partition_by</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;studio&quot;</span><span class=\"p\">),</span> <span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;genre&quot;</span><span class=\"p\">)],</span>\n<span class=\"gp\">... </span>        <span class=\"n\">order_by</span><span class=\"o\">=</span><span class=\"s2\">&quot;released__year&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>Ligeann sé seo duit seiceáil an bhfuil scannán a rátáil níos fearr nó níos measa ná a phiaraí.</p>\n<p>B'fhéidir gur mhaith leat nathanna iolracha a chur i bhfeidhm thar an bhfuinneog chéanna, ie, an deighilt agus an fráma céanna. Mar shampla, d'fhéadfá an sampla roimhe seo a mhodhnú chun an rátáil is fearr agus is measa a áireamh i ngrúpa gach scannáin (an stiúideo céanna, an seánra agus an bhliain scaoilte céanna) trí fheidhm fuinneoige a úsáid san fhiosrú céanna. Baintear an deighilt agus an t-ordú ón sampla roimhe seo isteach i bhfoclóir chun athrá a laghdú:</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=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Avg</span><span class=\"p\">,</span> <span class=\"n\">F</span><span class=\"p\">,</span> <span class=\"n\">Max</span><span class=\"p\">,</span> <span class=\"n\">Min</span><span class=\"p\">,</span> <span class=\"n\">Window</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">window</span> <span class=\"o\">=</span> <span class=\"p\">{</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;partition_by&quot;</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;studio&quot;</span><span class=\"p\">),</span> <span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;genre&quot;</span><span class=\"p\">)],</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;order_by&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;released__year&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">}</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Movie</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">avg_rating</span><span class=\"o\">=</span><span class=\"n\">Window</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>        <span class=\"n\">expression</span><span class=\"o\">=</span><span class=\"n\">Avg</span><span class=\"p\">(</span><span class=\"s2\">&quot;rating&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>        <span class=\"o\">**</span><span class=\"n\">window</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"p\">),</span>\n<span class=\"gp\">... </span>    <span class=\"n\">best</span><span class=\"o\">=</span><span class=\"n\">Window</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>        <span class=\"n\">expression</span><span class=\"o\">=</span><span class=\"n\">Max</span><span class=\"p\">(</span><span class=\"s2\">&quot;rating&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>        <span class=\"o\">**</span><span class=\"n\">window</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"p\">),</span>\n<span class=\"gp\">... </span>    <span class=\"n\">worst</span><span class=\"o\">=</span><span class=\"n\">Window</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>        <span class=\"n\">expression</span><span class=\"o\">=</span><span class=\"n\">Min</span><span class=\"p\">(</span><span class=\"s2\">&quot;rating&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>        <span class=\"o\">**</span><span class=\"n\">window</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>Tacaítear le scagadh i gcoinne feidhmeanna fuinneoige chomh fada agus nach bhfuil cuardaigh díghníomhach (gan úsáid OR` nó <code class=\"docutils literal notranslate\"><span class=\"pre\">XOR</span></code> mar chónascaire) agus i gcoinne tacar cheisteanna a dhéanann comhiomlánú.</p>\n<p>Mar shampla, ní thacaítear le ceist a bhraitheann ar chomhiomlánú agus a bhfuil scagaire <code class=\"docutils literal notranslate\"><span class=\"pre\">Or</span></code> -ED aige i gcoinne feidhm fuinneoige agus réimse. D'fhéadfadh go gcuirfí sraitheanna a eisiamh ó ghrúpaí de ghnáth a chur san áireamh iar-chomhiomlánú réamhchóga comhcheang</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=\"n\">qs</span> <span class=\"o\">=</span> <span class=\"n\">Movie</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">category_rank</span><span class=\"o\">=</span><span class=\"n\">Window</span><span class=\"p\">(</span><span class=\"n\">Rank</span><span class=\"p\">(),</span> <span class=\"n\">partition_by</span><span class=\"o\">=</span><span class=\"s2\">&quot;category&quot;</span><span class=\"p\">,</span> <span class=\"n\">order_by</span><span class=\"o\">=</span><span class=\"s2\">&quot;-rating&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    <span class=\"n\">scenes_count</span><span class=\"o\">=</span><span class=\"n\">Count</span><span class=\"p\">(</span><span class=\"s2\">&quot;actors&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">filter</span><span class=\"p\">(</span><span class=\"n\">Q</span><span class=\"p\">(</span><span class=\"n\">category_rank__lte</span><span class=\"o\">=</span><span class=\"mi\">3</span><span class=\"p\">)</span> <span class=\"o\">|</span> <span class=\"n\">Q</span><span class=\"p\">(</span><span class=\"n\">title__contains</span><span class=\"o\">=</span><span class=\"s2\">&quot;Batman&quot;</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">list</span><span class=\"p\">(</span><span class=\"n\">qs</span><span class=\"p\">)</span>\n<span class=\"go\">NotImplementedError: Heterogeneous disjunctive predicates against window functions</span>\n<span class=\"go\">are not implemented when performing conditional aggregation.</span>\n</code></pre></div>\n<p>I measc cúltaca bunachar sonraí ionsuite Django, tacaíonn MySQL, PostgreSQL, agus Oracle nathanna fuinneoige. Athraíonn tacaíocht do ghnéithe éagsúla léirithe fuinneoige i measc na mbun Mar shampla, ní fhéadfar tacú leis na roghanna in:meth: ~Django.db.Models.Expression.asc agus:meth: ~Django.db.Models.Expression.desc. Téigh i gcomhairle leis na cáipéisíocht do do bhunachar sonraí</p>\n<section id=\"frames\">\n<span id=\"window-frames\"></span><h4>Frámaí<a class=\"heading-anchor\" href=\"#frames\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Maidir le fráma fuinneoige, is féidir leat seicheamh sraitheanna bunaithe ar raon nó gnáthseicheamh sraitheanna a roghnú.</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.expressions.ValueRange\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">ValueRange</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">start</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">end</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">exclusion</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.expressions.ValueRange\"><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.expressions.ValueRange.frame_type\">\n<span class=\"sig-name descname\"><span class=\"pre\">frame_type</span></span><a class=\"heading-anchor\" href=\"#django.db.models.expressions.ValueRange.frame_type\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Tá an tréith seo socraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">'RANGE</span></code>.</p>\n</dd></dl>\n\n<p>Tá tacaíocht theoranta ag PostgreSQL do ValueRange` agus ní thacaíonn sé ach le húsáid na bpointí tosaigh agus deiridh caighdeánacha, mar shampla <code class=\"docutils literal notranslate\"><span class=\"pre\">CURRENT</span> <span class=\"pre\">ROW</span></code> agus <code class=\"docutils literal notranslate\"><span class=\"pre\">UNBOUNDED</span> <span class=\"pre\">FOLLOWING</span></code>.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.1\">\n<p class=\"version-note-title\">Changed in Django 5.1</p><p>Cuireadh an argóint <code class=\"docutils literal notranslate\"><span class=\"pre\">eisiaim</span></code> leis.</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.expressions.RowRange\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">RowRange</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">start</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">end</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">exclusion</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.expressions.RowRange\"><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.expressions.RowRange.frame_type\">\n<span class=\"sig-name descname\"><span class=\"pre\">frame_type</span></span><a class=\"heading-anchor\" href=\"#django.db.models.expressions.RowRange.frame_type\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Tá an tréith seo socraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">'ROWS'</span></code>.</p>\n</dd></dl>\n\n<aside class=\"version-note version-changed\" data-version=\"5.1\">\n<p class=\"version-note-title\">Changed in Django 5.1</p><p>Cuireadh an argóint <code class=\"docutils literal notranslate\"><span class=\"pre\">eisiaim</span></code> leis.</p>\n</aside>\n</dd></dl>\n\n<p>Tugann an dá rang SQL ar ais leis an teimpléad:</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=\"o\">%</span><span class=\"p\">(</span><span class=\"n\">frame_type</span><span class=\"p\">)</span><span class=\"n\">s</span><span class=\"w\"> </span><span class=\"k\">BETWEEN</span><span class=\"w\"> </span><span class=\"o\">%</span><span class=\"p\">(</span><span class=\"k\">start</span><span class=\"p\">)</span><span class=\"n\">s</span><span class=\"w\"> </span><span class=\"k\">AND</span><span class=\"w\"> </span><span class=\"o\">%</span><span class=\"p\">(</span><span class=\"k\">end</span><span class=\"p\">)</span><span class=\"n\">s</span>\n</code></pre></div>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.expressions.WindowFrameExclusion\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">WindowFrameExclusion</span></span><a class=\"heading-anchor\" href=\"#django.db.models.expressions.WindowFrameExclusion\"><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=\"5.1\">\n<p class=\"version-note-title\">New in Django 5.1</p></aside>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.expressions.WindowFrameExclusion.CURRENT_ROW\">\n<span class=\"sig-name descname\"><span class=\"pre\">CURRENT_ROW</span></span><a class=\"heading-anchor\" href=\"#django.db.models.expressions.WindowFrameExclusion.CURRENT_ROW\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.expressions.WindowFrameExclusion.GROUP\">\n<span class=\"sig-name descname\"><span class=\"pre\">GROUP</span></span><a class=\"heading-anchor\" href=\"#django.db.models.expressions.WindowFrameExclusion.GROUP\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.expressions.WindowFrameExclusion.TIES\">\n<span class=\"sig-name descname\"><span class=\"pre\">TIES</span></span><a class=\"heading-anchor\" href=\"#django.db.models.expressions.WindowFrameExclusion.TIES\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.expressions.WindowFrameExclusion.NO_OTHERS\">\n<span class=\"sig-name descname\"><span class=\"pre\">NO_OTHERS</span></span><a class=\"heading-anchor\" href=\"#django.db.models.expressions.WindowFrameExclusion.NO_OTHERS\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<p>Ceadaíonn an argóint <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>eisiamh <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>sraitheanna (:attr: ~WindowFrameExclusion.current_row), grúpaí (:attr: ~WindowFrameExclusion.group), agus ceangail (:attr: ~WindowFrameExclusion.ties) a eisiamh ó na frámaí fuinneoige ar bhunachar sonraí tacaithe:</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=\"o\">%</span><span class=\"p\">(</span><span class=\"n\">frame_type</span><span class=\"p\">)</span><span class=\"n\">s</span><span class=\"w\"> </span><span class=\"k\">BETWEEN</span><span class=\"w\"> </span><span class=\"o\">%</span><span class=\"p\">(</span><span class=\"k\">start</span><span class=\"p\">)</span><span class=\"n\">s</span><span class=\"w\"> </span><span class=\"k\">AND</span><span class=\"w\"> </span><span class=\"o\">%</span><span class=\"p\">(</span><span class=\"k\">end</span><span class=\"p\">)</span><span class=\"n\">s</span><span class=\"w\"> </span><span class=\"n\">EXCLUDE</span><span class=\"w\"> </span><span class=\"o\">%</span><span class=\"p\">(</span><span class=\"n\">exclusion</span><span class=\"p\">)</span><span class=\"n\">s</span>\n</code></pre></div>\n<p>Cuimsíonn frámaí na sraitheanna a úsáidtear chun an toradh a ríomh. Aistríonn siad ó phointe tosaigh éigin go pointe deiridh sonraithe éigin. Is féidir frámaí a úsáid le deighiltí agus gan deighiltí, ach is minic gur smaoineamh maith é ordú na fuinneoige a shonrú chun toradh cinntitheach a chinntiú. I bhfráma, is é piaraí i bhfráma ina chéile le luach coibhéiseach, nó gach sraitheanna mura bhfuil clásal ordaithe i láthair.</p>\n<p>Is é an pointe tosaigh réamhshocraithe le haghaidh fráma ná <code class=\"docutils literal notranslate\"><span class=\"pre\">UNBOUNDED</span> <span class=\"pre\">PRESEING</span></code> arb é an chéad tsraith den dheighilt. Cuirtear an pointe deiridh san áireamh go sainráite i gcónaí sa SQL a ghineann an ORM agus de réir réamhshocraithe é “FOLLOWING UNBOUNDED”. Cuimsíonn an fráma réamhshocraithe gach sraitheanna ón deighilt go dtí an tsraith deireanach sa tacar.</p>\n<p>Is iad na luachanna a nglactar leis do na hargóintí <code class=\"docutils literal notranslate\"><span class=\"pre\">tús</span> <span class=\"pre\">``agus</span> <span class=\"pre\">``deireadh</span></code> ná <code class=\"docutils literal notranslate\"><span class=\"pre\">None</span></code>, sláimhir, nó nialas. Mar thoradh ar shláimhir dhiúltach do <code class=\"docutils literal notranslate\"><span class=\"pre\">tosaithe</span></code> bíonn <code class=\"docutils literal notranslate\"><span class=\"pre\">N</span> <span class=\"pre\">ROIMH</span> <span class=\"pre\">ROIMH</span></code> mar thoradh ar <code class=\"docutils literal notranslate\"><span class=\"pre\">``None</span></code> ROIMH `ROIMH NEAMHTHEANNA`. I mód <code class=\"docutils literal notranslate\"><span class=\"pre\">ROWS`,</span> <span class=\"pre\">is</span> <span class=\"pre\">féidir</span> <span class=\"pre\">sláimhir</span> <span class=\"pre\">dhearfach</span> <span class=\"pre\">a</span> <span class=\"pre\">úsáid</span> <span class=\"pre\">le</span> <span class=\"pre\">haghaidh</span> <span class=\"pre\">``tús</span> <span class=\"pre\">``mar</span> <span class=\"pre\">thoradh</span> <span class=\"pre\">ar</span> <span class=\"pre\">``N</span> <span class=\"pre\">FOLLOWING</span></code>. Glactar le sláimhreacha dearfacha le haghaidh <code class=\"docutils literal notranslate\"><span class=\"pre\">deireadh</span> <span class=\"pre\">``agus</span> <span class=\"pre\">bíonn</span> <span class=\"pre\">`N</span> <span class=\"pre\">FOLLOWING</span></code> mar thoradh air. I mód <code class=\"docutils literal notranslate\"><span class=\"pre\">ROWS`,</span> <span class=\"pre\">is</span> <span class=\"pre\">féidir</span> <span class=\"pre\">sláimhir</span> <span class=\"pre\">dhiúltach</span> <span class=\"pre\">a</span> <span class=\"pre\">úsáid</span> <span class=\"pre\">le</span> <span class=\"pre\">haghaidh</span> <span class=\"pre\">``deireadh</span> <span class=\"pre\">``mar</span> <span class=\"pre\">thoradh</span> <span class=\"pre\">air</span> <span class=\"pre\">sin</span> <span class=\"pre\">``N</span> <span class=\"pre\">ROIMH</span></code>. Maidir le <code class=\"docutils literal notranslate\"><span class=\"pre\">tosa</span></code> agus <code class=\"docutils literal notranslate\"><span class=\"pre\">deireadh</span> <span class=\"pre\">``araon,</span> <span class=\"pre\">fillfidh</span> <span class=\"pre\">nialas</span> <span class=\"pre\">``CURRENT</span> <span class=\"pre\">ROW</span></code>.</p>\n<p>Tá difríocht ann maidir leis an méid a chuimsíonn <code class=\"docutils literal notranslate\"><span class=\"pre\">CURRENT</span> <span class=\"pre\">ROW</span></code>. Nuair a shonraítear i mód <code class=\"docutils literal notranslate\"><span class=\"pre\">ROWS`,</span> <span class=\"pre\">tosaíonn</span> <span class=\"pre\">nó</span> <span class=\"pre\">críochnaíonn</span> <span class=\"pre\">an</span> <span class=\"pre\">fráma</span> <span class=\"pre\">leis</span> <span class=\"pre\">an</span> <span class=\"pre\">tsraith</span> <span class=\"pre\">reatha.</span> <span class=\"pre\">Nuair</span> <span class=\"pre\">a</span> <span class=\"pre\">shonraítear</span> <span class=\"pre\">i</span> <span class=\"pre\">mód</span> <span class=\"pre\">“RANGE”,</span> <span class=\"pre\">tosaíonn</span> <span class=\"pre\">nó</span> <span class=\"pre\">críochnaíonn</span> <span class=\"pre\">an</span> <span class=\"pre\">fráma</span> <span class=\"pre\">ag</span> <span class=\"pre\">an</span> <span class=\"pre\">gcéad</span> <span class=\"pre\">piara</span> <span class=\"pre\">nó</span> <span class=\"pre\">an</span> <span class=\"pre\">piara</span> <span class=\"pre\">deireanach</span> <span class=\"pre\">de</span> <span class=\"pre\">réir</span> <span class=\"pre\">an</span> <span class=\"pre\">chlásal</span> <span class=\"pre\">ordaithe.</span> <span class=\"pre\">Dá</span> <span class=\"pre\">bhrí</span> <span class=\"pre\">sin,</span> <span class=\"pre\">déanann</span> <span class=\"pre\">`RANGE</span> <span class=\"pre\">CURRENT</span> <span class=\"pre\">ROW`</span> <span class=\"pre\">measúnú</span> <span class=\"pre\">ar</span> <span class=\"pre\">an</span> <span class=\"pre\">abairt</span> <span class=\"pre\">do</span> <span class=\"pre\">shraitheanna</span> <span class=\"pre\">a</span> <span class=\"pre\">bhfuil</span> <span class=\"pre\">an</span> <span class=\"pre\">luach</span> <span class=\"pre\">céanna</span> <span class=\"pre\">acu</span> <span class=\"pre\">a</span> <span class=\"pre\">shonraítear</span> <span class=\"pre\">leis</span> <span class=\"pre\">an</span> <span class=\"pre\">ordú.</span> <span class=\"pre\">Toisc</span> <span class=\"pre\">go</span> <span class=\"pre\">n-áirítear</span> <span class=\"pre\">sa</span> <span class=\"pre\">teimpléad</span> <span class=\"pre\">na</span> <span class=\"pre\">pointí</span> <span class=\"pre\">``tosaithe</span></code> agus <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>deireadh <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>araon, féadfar é seo a chur in iúl le:</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=\"n\">ValueRange</span><span class=\"p\">(</span><span class=\"n\">start</span><span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"n\">end</span><span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Má dhéantar cur síos ar “phiaraí” scannáin mar scannáin a d'eisigh an stiúideo céanna sa seánra céanna sa bhliain chéanna, déanann an sampla <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Rowrange` seo anótáil gach scannán le meán-rátáil dhá phiaraí roimhe seo agus beirt phiaraí scannáin seo a leanas:</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=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Avg</span><span class=\"p\">,</span> <span class=\"n\">F</span><span class=\"p\">,</span> <span class=\"n\">RowRange</span><span class=\"p\">,</span> <span class=\"n\">Window</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Movie</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">avg_rating</span><span class=\"o\">=</span><span class=\"n\">Window</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>        <span class=\"n\">expression</span><span class=\"o\">=</span><span class=\"n\">Avg</span><span class=\"p\">(</span><span class=\"s2\">&quot;rating&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>        <span class=\"n\">partition_by</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;studio&quot;</span><span class=\"p\">),</span> <span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;genre&quot;</span><span class=\"p\">)],</span>\n<span class=\"gp\">... </span>        <span class=\"n\">order_by</span><span class=\"o\">=</span><span class=\"s2\">&quot;released__year&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>        <span class=\"n\">frame</span><span class=\"o\">=</span><span class=\"n\">RowRange</span><span class=\"p\">(</span><span class=\"n\">start</span><span class=\"o\">=-</span><span class=\"mi\">2</span><span class=\"p\">,</span> <span class=\"n\">end</span><span class=\"o\">=</span><span class=\"mi\">2</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>Má thacaíonn an bunachar sonraí leis, is féidir leat na pointí tosaigh agus deiridh a shonrú bunaithe ar luachanna léirithe sa dheighilt. Má stóráil réimse <code class=\"docutils literal notranslate\"><span class=\"pre\">scaoil</span></code> den tsamhail <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>Scannán <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>mhí scaoilte gach scannáin, déanann an sampla <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>ValueRange` seo anótáil gach scannán le meánrátáil piaraí scannáin a eisíodh idir dhá mhí dhéag roimh agus dhá mhí dhá tar éis gach scanná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><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Avg</span><span class=\"p\">,</span> <span class=\"n\">F</span><span class=\"p\">,</span> <span class=\"n\">ValueRange</span><span class=\"p\">,</span> <span class=\"n\">Window</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">Movie</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">avg_rating</span><span class=\"o\">=</span><span class=\"n\">Window</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>        <span class=\"n\">expression</span><span class=\"o\">=</span><span class=\"n\">Avg</span><span class=\"p\">(</span><span class=\"s2\">&quot;rating&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>        <span class=\"n\">partition_by</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;studio&quot;</span><span class=\"p\">),</span> <span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;genre&quot;</span><span class=\"p\">)],</span>\n<span class=\"gp\">... </span>        <span class=\"n\">order_by</span><span class=\"o\">=</span><span class=\"s2\">&quot;released__year&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>        <span class=\"n\">frame</span><span class=\"o\">=</span><span class=\"n\">ValueRange</span><span class=\"p\">(</span><span class=\"n\">start</span><span class=\"o\">=-</span><span class=\"mi\">12</span><span class=\"p\">,</span> <span class=\"n\">end</span><span class=\"o\">=</span><span class=\"mi\">12</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<aside class=\"version-note version-changed\" data-version=\"5.1\">\n<p class=\"version-note-title\">Changed in Django 5.1</p><p>Cuireadh tacaíocht do shláimhir dearfach <code class=\"docutils literal notranslate\"><span class=\"pre\">`tús</span> <span class=\"pre\">``agus</span> <span class=\"pre\">sláimhir</span> <span class=\"pre\">dhiúltach</span> <span class=\"pre\">``deireadh</span></code> le haghaidh Rowrange`.</p>\n</aside>\n</section>\n</section>\n</section>\n<section id=\"technical-information\">\n<h2>Eolas Teicniúil<a class=\"heading-anchor\" href=\"#technical-information\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Anseo thíos gheobhaidh tú sonraí feidhme teicniúla a d'fhéadfadh a bheith úsáideach d'údair leabharlainne Cuideoidh an API teicniúil agus na samplaí thíos le nathanna ceisteanna cineálacha a chruthú ar féidir leo an fheidhmiúlacht ionsuite a sholáthraíonn Django</p>\n<section id=\"expression-api\">\n<h3>API léiriú<a class=\"heading-anchor\" href=\"#expression-api\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Cuireann nathanna fiosrúcháin an: ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>abairt fiosraithe API &lt;query-expression&gt;`i bhfeidhm, ach nochtann roinnt modhanna agus tréithe breise atá liostaithe thíos freisin. Caithfidh gach abairt fiosrúcháin a oidhreacht ó <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>Expression () <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>nó ó fho-aicme ábhartha.</p>\n<p>Nuair a fhilleann abairt fiosrúcháin abairt eile, tá sé freagrach as na modhanna cuí a ghlaoch ar an abairt fillte.</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Expression\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">Expression</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Expression\"><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.Expression.allowed_default\">\n<span class=\"sig-name descname\"><span class=\"pre\">allowed_default</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Expression.allowed_default\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Insíonn sé le Django gur féidir an abairt seo a úsáid in:attr: Field.db_default. Réamhshocraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Expression.constraint_validation_compatible\">\n<span class=\"sig-name descname\"><span class=\"pre\">constraint_validation_compatible</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Expression.constraint_validation_compatible\"><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=\"5.1\">\n<p class=\"version-note-title\">New in Django 5.1</p></aside>\n<p>Insíonn sé le Django gur féidir an abairt seo a úsáid le linn bailíochtú srianta. Ní mór ach abairt foinse amháin a bheith ag abhairtí le <code class=\"docutils literal notranslate\"><span class=\"pre\">restricint_validation_compatible</span></code> atá socraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>. Réamhshocraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Expression.contains_aggregate\">\n<span class=\"sig-name descname\"><span class=\"pre\">contains_aggregate</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Expression.contains_aggregate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Insíonn sé le Django go bhfuil comhiomlán sa abairt seo agus gur gá clásal <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>GROUP BY <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>a chur leis an gceist.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Expression.contains_over_clause\">\n<span class=\"sig-name descname\"><span class=\"pre\">contains_over_clause</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Expression.contains_over_clause\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Insíonn sé le Django go bhfuil a: aicme: ~Django.db.Models.Expressions.Window léiriú sa abairt seo. Úsáidtear é, mar shampla, chun nathanna feidhme fuinneoige a dhícheadú i gceisteanna a mhodhnóidh sonraí.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Expression.filterable\">\n<span class=\"sig-name descname\"><span class=\"pre\">filterable</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Expression.filterable\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Insíonn sé le Django gur féidir tagairt a thabhairt don abairt seo in:meth: .querySet.filter. Réamhshocraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Expression.window_compatible\">\n<span class=\"sig-name descname\"><span class=\"pre\">window_compatible</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Expression.window_compatible\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Insíonn sé le Django gur féidir an abairt seo a úsáid mar an abairt foinse in:class: ~Django.db.Models.Expressions.Window. Réamhshocraithe go <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Expression.empty_result_set_value\">\n<span class=\"sig-name descname\"><span class=\"pre\">empty_result_set_value</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Expression.empty_result_set_value\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Insíonn sé le Django cén luach ba chóir a thabhairt ar ais nuair a úsáidtear an abairt chun feidhm a chur i bhfeidhm thar shraith torthaí folamh. Réamhshocraithe to:py:data: NotImplemented a chuireann iallach ar an abairt a ríomh ar an mbunachar sonraí.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Expression.set_returning\">\n<span class=\"sig-name descname\"><span class=\"pre\">set_returning</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Expression.set_returning\"><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=\"5.2\">\n<p class=\"version-note-title\">New in Django 5.2</p></aside>\n<p>Tells Django that this expression contains a set-returning function,\nenforcing subquery evaluation. It's used, for example, to allow some\nPostgres set-returning functions (e.g. <code class=\"docutils literal notranslate\"><span class=\"pre\">JSONB_PATH_QUERY</span></code>,\n<code class=\"docutils literal notranslate\"><span class=\"pre\">UNNEST</span></code>, etc.) to skip optimization and be properly evaluated when\nannotations spawn rows themselves. Defaults to <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Expression.allows_composite_expressions\">\n<span class=\"sig-name descname\"><span class=\"pre\">allows_composite_expressions</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Expression.allows_composite_expressions\"><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=\"5.2\">\n<p class=\"version-note-title\">New in Django 5.2</p></aside>\n<p>Tells Django that this expression allows composite expressions, for\nexample, to support <a class=\"reference internal\" href=\"/ga/5.2/topics/composite-primary-key/#cpk-and-database-functions\"><span class=\"std std-ref\">composite primary keys</span></a>. Defaults to <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Expression.resolve_expression\">\n<span class=\"sig-name descname\"><span class=\"pre\">resolve_expression</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">query</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">allow_joins</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">reuse</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">summarize</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">for_save</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Expression.resolve_expression\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Soláthraíonn sé deis aon réamhphróiseáil nó bailíochtú an abairt a dhéanamh sula gcuirtear é leis an bhfiosrú. Ní mór <code class=\"docutils literal notranslate\"><span class=\"pre\">resolve_expression</span> <span class=\"pre\">()</span> <span class=\"pre\">``a</span> <span class=\"pre\">ghlaoch</span> <span class=\"pre\">freisin</span> <span class=\"pre\">ar</span> <span class=\"pre\">aon</span> <span class=\"pre\">nathanna</span> <span class=\"pre\">neadaithe.</span> <span class=\"pre\">Ba</span> <span class=\"pre\">chóir</span> <span class=\"pre\">``cóip</span> <span class=\"pre\">()</span> <span class=\"pre\">``de</span> <span class=\"pre\">``féin</span></code> a thabhairt ar ais le haon claochlú riachtanach.</p>\n<p>Is é <code class=\"docutils literal notranslate\"><span class=\"pre\">fiosraithe</span></code> cur i bhfeidhm na ceisteanna cúltaca.</p>\n<p>Is boolean é allow_joins` a cheadaíonn nó a dhiúltaíonn úsáid comhpháirteanna sa cheist.</p>\n<p>Is sraith de chomhpháirteanna in-athúsáidte é <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>athúsáid` le haghaidh cásanna ilcheangailte.</p>\n<p>Is boolean é <code class=\"docutils literal notranslate\"><span class=\"pre\">achoimre</span> <span class=\"pre\">``a</span> <span class=\"pre\">thugann</span> <span class=\"pre\">comharthaíocht,</span> <span class=\"pre\">nuair</span> <span class=\"pre\">a</span> <span class=\"pre\">dhéanann</span> <span class=\"pre\">``True</span></code>, gur ceist chomhiomlán críochfoirt é an cheist atá á ríomh.</p>\n<p>Is boolean é <code class=\"docutils literal notranslate\"><span class=\"pre\">for_save</span></code> a thugann comharthaíocht, nuair a dhéanann <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, go bhfuil an ceist atá á fhorghníomhú ag déanamh cruthú nó nuashonrú.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Expression.get_source_expressions\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_source_expressions</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Expression.get_source_expressions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Tugann liosta ordaithe de nathanna istigh ar ais. Mar shampla:</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=\"n\">Sum</span><span class=\"p\">(</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;foo&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span><span class=\"n\">get_source_expressions</span><span class=\"p\">()</span>\n<span class=\"go\">[F(&#39;foo&#39;)]</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Expression.set_source_expressions\">\n<span class=\"sig-name descname\"><span class=\"pre\">set_source_expressions</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">expressions</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Expression.set_source_expressions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Tógann sé liosta nathanna agus stóráilíonn sé iad ionas gur féidir le <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>get_source_expressions () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>iad a thabhairt ar ais.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Expression.relabeled_clone\">\n<span class=\"sig-name descname\"><span class=\"pre\">relabeled_clone</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">change_map</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Expression.relabeled_clone\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Tugann clón (cóip) de <code class=\"docutils literal notranslate\"><span class=\"pre\">féin</span></code> ar ais, le haon ainmneacha colún athlipéadaithe. Athainmnítear ainmneacha colún nuair a chruthaítear fo-cheisteanna. Ba chóir <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>relabeled_clone () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>a ghlaoch freisin ar aon nathanna neadaithe agus a shannadh don chlón.</p>\n<p>Is foclóir é <code class=\"docutils literal notranslate\"><span class=\"pre\">change_map</span></code> a mhapáil sean-ainmneacha chuig ainmneacha nua.</p>\n<p>Sampla:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">relabeled_clone</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">change_map</span><span class=\"p\">):</span>\n    <span class=\"n\">clone</span> <span class=\"o\">=</span> <span class=\"n\">copy</span><span class=\"o\">.</span><span class=\"n\">copy</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">)</span>\n    <span class=\"n\">clone</span><span class=\"o\">.</span><span class=\"n\">expression</span> <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">expression</span><span class=\"o\">.</span><span class=\"n\">relabeled_clone</span><span class=\"p\">(</span><span class=\"n\">change_map</span><span class=\"p\">)</span>\n    <span class=\"k\">return</span> <span class=\"n\">clone</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Expression.convert_value\">\n<span class=\"sig-name descname\"><span class=\"pre\">convert_value</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">value</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">expression</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">connection</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Expression.convert_value\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Crúca a ligeann don abairt “luach” a chur i gcrích níos oiriúnaí.</p>\n<p>Tá <code class=\"docutils literal notranslate\"><span class=\"pre\">léirithe</span></code> mar an gcéanna le <code class=\"docutils literal notranslate\"><span class=\"pre\">féin</span></code>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Expression.get_group_by_cols\">\n<span class=\"sig-name descname\"><span class=\"pre\">get_group_by_cols</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Expression.get_group_by_cols\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Freagrach as liosta na dtagairtí colúin a thabhairt ar ais leis an abairt seo. Ba chóir <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>get_group_by_cols () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>a ghlaoch ar aon abairtí neadaithe. Tá tagairt do cholún go háirithe ag rudaí <a href=\"#id5\"><span class=\"problematic\" id=\"id6\">``</span></a>F () <a href=\"#id7\"><span class=\"problematic\" id=\"id8\">`</span></a>.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Expression.asc\">\n<span class=\"sig-name descname\"><span class=\"pre\">asc</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">nulls_first</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">nulls_last</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Expression.asc\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Filleann sé an abairt atá réidh le sórtáil in ord ardaitheach.</p>\n<p>Sainmhíníonn <code class=\"docutils literal notranslate\"><span class=\"pre\">nulls_first</span></code> agus <code class=\"docutils literal notranslate\"><span class=\"pre\">nulls_last</span></code> conas a shórtáiltear luachanna null. Féach:ref: using-f-to-sort-null-values mar shampla úsáid.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Expression.desc\">\n<span class=\"sig-name descname\"><span class=\"pre\">desc</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">nulls_first</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">nulls_last</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">None</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Expression.desc\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Filleann sé an abairt atá réidh le sórtáil in ord íslitheach.</p>\n<p>Sainmhíníonn <code class=\"docutils literal notranslate\"><span class=\"pre\">nulls_first</span></code> agus <code class=\"docutils literal notranslate\"><span class=\"pre\">nulls_last</span></code> conas a shórtáiltear luachanna null. Féach:ref: using-f-to-sort-null-values mar shampla úsáid.</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Expression.reverse_ordering\">\n<span class=\"sig-name descname\"><span class=\"pre\">reverse_ordering</span></span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Expression.reverse_ordering\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Tugann sé “féin” ar ais le haon mhodhnuithe a theastaíonn chun an t-ordú sórtála a aisiompú laistigh de ghlao <code class=\"docutils literal notranslate\"><span class=\"pre\">order_by</span></code>. Mar shampla, athródh abairt a chur i bhfeidhm <code class=\"docutils literal notranslate\"><span class=\"pre\">NULLS</span> <span class=\"pre\">LAST</span></code> a luach go NULLS FIRST`. Ní theastaíonn modhnuithe ach le haghaidh nathanna a chuireann ord sórtála i bhfeidhm mar Orderby`. Tugtar an modh seo nuair a ghlaítear: meth: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>~django.db.models.query.queryset.reverse () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>ar fhiosraith.</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"writing-your-own-query-expressions\">\n<h3>Scríobh do chuid Nathanna Fiosrúcháin<a class=\"heading-anchor\" href=\"#writing-your-own-query-expressions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Is féidir leat d'aicmí léirithe fiosrúcháin féin a scríobh a úsáideann nathanna fiosrúcháin eile agus is féidir leo comhtháthú leo. &lt;func-expressions&gt;Déanaimis céim trí shampla trí chur i bhfeidhm an fheidhm <code class=\"docutils literal notranslate\"><span class=\"pre\">COALESCE</span></code> SQL a scríobh, gan na nathanna ionsuite: ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>Func () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>a úsáid.</p>\n<p>Sainmhínítear an fheidhm SQL COALESCE` mar liosta de cholúin nó luachanna a ghlacadh. Cuirfidh sé an chéad cholún nó an luach ar ais nach <code class=\"docutils literal notranslate\"><span class=\"pre\">NULL</span></code>.</p>\n<p>Tosóimid tríd an teimpléad atá le húsáid le haghaidh giniúint SQL agus modh <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>__init__ () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>a shainiú chun roinnt tréithe a shocrú:</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=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Expression</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Coalesce</span><span class=\"p\">(</span><span class=\"n\">Expression</span><span class=\"p\">):</span>\n    <span class=\"n\">template</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;COALESCE( </span><span class=\"si\">%(expressions)s</span><span class=\"s2\"> )&quot;</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">expressions</span><span class=\"p\">,</span> <span class=\"n\">output_field</span><span class=\"p\">):</span>\n        <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"n\">output_field</span><span class=\"o\">=</span><span class=\"n\">output_field</span><span class=\"p\">)</span>\n        <span class=\"k\">if</span> <span class=\"nb\">len</span><span class=\"p\">(</span><span class=\"n\">expressions</span><span class=\"p\">)</span> <span class=\"o\">&lt;</span> <span class=\"mi\">2</span><span class=\"p\">:</span>\n            <span class=\"k\">raise</span> <span class=\"ne\">ValueError</span><span class=\"p\">(</span><span class=\"s2\">&quot;expressions must have at least 2 elements&quot;</span><span class=\"p\">)</span>\n        <span class=\"k\">for</span> <span class=\"n\">expression</span> <span class=\"ow\">in</span> <span class=\"n\">expressions</span><span class=\"p\">:</span>\n            <span class=\"k\">if</span> <span class=\"ow\">not</span> <span class=\"nb\">hasattr</span><span class=\"p\">(</span><span class=\"n\">expression</span><span class=\"p\">,</span> <span class=\"s2\">&quot;resolve_expression&quot;</span><span class=\"p\">):</span>\n                <span class=\"k\">raise</span> <span class=\"ne\">TypeError</span><span class=\"p\">(</span><span class=\"s2\">&quot;</span><span class=\"si\">%r</span><span class=\"s2\"> is not an Expression&quot;</span> <span class=\"o\">%</span> <span class=\"n\">expression</span><span class=\"p\">)</span>\n        <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">expressions</span> <span class=\"o\">=</span> <span class=\"n\">expressions</span>\n</code></pre></div>\n<p>Déanaimid roinnt bailíochtú bunúsach ar na paraiméadair, lena n-áirítear 2 cholún nó luach ar a laghad a éileamh, agus a chinntiú gur nathanna iad Táimid ag iarraidh:ref: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>output_field &lt;output-field&gt;`anseo ionas go mbeidh a fhios ag Django cén cineál réimse samhail chun an toradh deiridh a shannadh dó.</p>\n<p>Anois cuirimid an réamhphróiseáil agus bailíochtú i bhfeidhm. Ós rud é nach bhfuil aon cheann dár mbailíochtú féin againn ag an bpointe seo, tarmligimid chuig na nathanna neadaithe:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">resolve_expression</span><span class=\"p\">(</span>\n    <span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">query</span><span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">,</span> <span class=\"n\">allow_joins</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span> <span class=\"n\">reuse</span><span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">,</span> <span class=\"n\">summarize</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">,</span> <span class=\"n\">for_save</span><span class=\"o\">=</span><span class=\"kc\">False</span>\n<span class=\"p\">):</span>\n    <span class=\"n\">c</span> <span class=\"o\">=</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">copy</span><span class=\"p\">()</span>\n    <span class=\"n\">c</span><span class=\"o\">.</span><span class=\"n\">is_summary</span> <span class=\"o\">=</span> <span class=\"n\">summarize</span>\n    <span class=\"k\">for</span> <span class=\"n\">pos</span><span class=\"p\">,</span> <span class=\"n\">expression</span> <span class=\"ow\">in</span> <span class=\"nb\">enumerate</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">expressions</span><span class=\"p\">):</span>\n        <span class=\"n\">c</span><span class=\"o\">.</span><span class=\"n\">expressions</span><span class=\"p\">[</span><span class=\"n\">pos</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"n\">expression</span><span class=\"o\">.</span><span class=\"n\">resolve_expression</span><span class=\"p\">(</span>\n            <span class=\"n\">query</span><span class=\"p\">,</span> <span class=\"n\">allow_joins</span><span class=\"p\">,</span> <span class=\"n\">reuse</span><span class=\"p\">,</span> <span class=\"n\">summarize</span><span class=\"p\">,</span> <span class=\"n\">for_save</span>\n        <span class=\"p\">)</span>\n    <span class=\"k\">return</span> <span class=\"n\">c</span>\n</code></pre></div>\n<p>Ansin, scríobhaimid an modh atá freagrach as an SQL a ghiniúint:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">as_sql</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">compiler</span><span class=\"p\">,</span> <span class=\"n\">connection</span><span class=\"p\">,</span> <span class=\"n\">template</span><span class=\"o\">=</span><span class=\"kc\">None</span><span class=\"p\">):</span>\n    <span class=\"n\">sql_expressions</span><span class=\"p\">,</span> <span class=\"n\">sql_params</span> <span class=\"o\">=</span> <span class=\"p\">[],</span> <span class=\"p\">[]</span>\n    <span class=\"k\">for</span> <span class=\"n\">expression</span> <span class=\"ow\">in</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">expressions</span><span class=\"p\">:</span>\n        <span class=\"n\">sql</span><span class=\"p\">,</span> <span class=\"n\">params</span> <span class=\"o\">=</span> <span class=\"n\">compiler</span><span class=\"o\">.</span><span class=\"n\">compile</span><span class=\"p\">(</span><span class=\"n\">expression</span><span class=\"p\">)</span>\n        <span class=\"n\">sql_expressions</span><span class=\"o\">.</span><span class=\"n\">append</span><span class=\"p\">(</span><span class=\"n\">sql</span><span class=\"p\">)</span>\n        <span class=\"n\">sql_params</span><span class=\"o\">.</span><span class=\"n\">extend</span><span class=\"p\">(</span><span class=\"n\">params</span><span class=\"p\">)</span>\n    <span class=\"n\">template</span> <span class=\"o\">=</span> <span class=\"n\">template</span> <span class=\"ow\">or</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">template</span>\n    <span class=\"n\">data</span> <span class=\"o\">=</span> <span class=\"p\">{</span><span class=\"s2\">&quot;expressions&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;,&quot;</span><span class=\"o\">.</span><span class=\"n\">join</span><span class=\"p\">(</span><span class=\"n\">sql_expressions</span><span class=\"p\">)}</span>\n    <span class=\"k\">return</span> <span class=\"n\">template</span> <span class=\"o\">%</span> <span class=\"n\">data</span><span class=\"p\">,</span> <span class=\"n\">sql_params</span>\n\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">as_oracle</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">compiler</span><span class=\"p\">,</span> <span class=\"n\">connection</span><span class=\"p\">):</span>\n<span class=\"w\">    </span><span class=\"sd\">&quot;&quot;&quot;</span>\n<span class=\"sd\">    Example of vendor specific handling (Oracle in this case).</span>\n<span class=\"sd\">    Let&#39;s make the function name lowercase.</span>\n<span class=\"sd\">    &quot;&quot;&quot;</span>\n    <span class=\"k\">return</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">as_sql</span><span class=\"p\">(</span><span class=\"n\">compiler</span><span class=\"p\">,</span> <span class=\"n\">connection</span><span class=\"p\">,</span> <span class=\"n\">template</span><span class=\"o\">=</span><span class=\"s2\">&quot;coalesce( </span><span class=\"si\">%(expressions)s</span><span class=\"s2\"> )&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Is féidir le modhanna <code class=\"docutils literal notranslate\"><span class=\"pre\">as_sql</span> <span class=\"pre\">()</span> <span class=\"pre\">``tacú</span> <span class=\"pre\">le</span> <span class=\"pre\">hargóintí</span> <span class=\"pre\">saincheaptha</span> <span class=\"pre\">eochairfhocal,</span> <span class=\"pre\">rud</span> <span class=\"pre\">a</span> <span class=\"pre\">ligeann</span> <span class=\"pre\">do</span> <span class=\"pre\">mhodhanna</span> <span class=\"pre\">``as_vendorname</span> <span class=\"pre\">()</span></code> sonraí a úsáidtear chun an teaghrán SQL a ghiniúint a shárú. Is fearr argóintí eochairfhocal <code class=\"docutils literal notranslate\"><span class=\"pre\">as_sql</span> <span class=\"pre\">()</span> <span class=\"pre\">``a</span> <span class=\"pre\">úsáid</span> <span class=\"pre\">le</span> <span class=\"pre\">haghaidh</span> <span class=\"pre\">saincheaptha</span> <span class=\"pre\">ná</span> <span class=\"pre\">``self</span></code> a athrú laistigh de mhodhanna as_vendorname ()` mar is féidir earráidí a bheith mar thoradh ar an dara ceann agus iad ag rith ar chúlpháirteanna éagsúla bunachar sonraí. Má bhíonn do rang ag brath ar thréithe ranga chun sonraí a shainiú, smaoinigh ar sháraitheanna a cheadú i do mhodh as_sql () `.</p>\n<p>Gineann muid an SQL do gach ceann de na “léirithe” tríd an modh <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>compiler.compiler.compiler () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>a úsáid, agus cuirimid an toradh in éineacht le camóga. Ansin líontar an teimpléad lenár sonraí agus cuirtear an SQL agus na paraiméadair ar ais.</p>\n<p>Tá cur i bhfeidhm saincheaptha sainmhínithe againn freisin atá sonrach don chúlcheann Oracle. Glaofar an fheidhm <code class=\"docutils literal notranslate\"><span class=\"pre\">as_oracle</span> <span class=\"pre\">()</span> <span class=\"pre\">``in</span> <span class=\"pre\">ionad</span> <span class=\"pre\">``as_sql</span> <span class=\"pre\">()</span></code> má tá cúltaca Oracle in úsáid.</p>\n<p>Faoi dheireadh, cuirimid an chuid eile de na modhanna i bhfeidhm a ligeann dár léiriú ceisteanna imirt go deas le nathanna ceisteanna eile:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_source_expressions</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n    <span class=\"k\">return</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">expressions</span>\n\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">set_source_expressions</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">expressions</span><span class=\"p\">):</span>\n    <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">expressions</span> <span class=\"o\">=</span> <span class=\"n\">expressions</span>\n</code></pre></div>\n<p>Feicfimid conas a oibríonn sé:</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=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">F</span><span class=\"p\">,</span> <span class=\"n\">Value</span><span class=\"p\">,</span> <span class=\"n\">CharField</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">qs</span> <span class=\"o\">=</span> <span class=\"n\">Company</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">annotate</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"n\">tagline</span><span class=\"o\">=</span><span class=\"n\">Coalesce</span><span class=\"p\">(</span>\n<span class=\"gp\">... </span>        <span class=\"p\">[</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;motto&quot;</span><span class=\"p\">),</span> <span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;ticker_name&quot;</span><span class=\"p\">),</span> <span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;description&quot;</span><span class=\"p\">),</span> <span class=\"n\">Value</span><span class=\"p\">(</span><span class=\"s2\">&quot;No Tagline&quot;</span><span class=\"p\">)],</span>\n<span class=\"gp\">... </span>        <span class=\"n\">output_field</span><span class=\"o\">=</span><span class=\"n\">CharField</span><span class=\"p\">(),</span>\n<span class=\"gp\">... </span>    <span class=\"p\">)</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">for</span> <span class=\"n\">c</span> <span class=\"ow\">in</span> <span class=\"n\">qs</span><span class=\"p\">:</span>\n<span class=\"gp\">... </span>    <span class=\"nb\">print</span><span class=\"p\">(</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><span class=\"n\">c</span><span class=\"o\">.</span><span class=\"n\">name</span><span class=\"p\">,</span> <span class=\"n\">c</span><span class=\"o\">.</span><span class=\"n\">tagline</span><span class=\"p\">))</span>\n<span class=\"gp\">...</span>\n<span class=\"go\">Google: Do No Evil</span>\n<span class=\"go\">Apple: AAPL</span>\n<span class=\"go\">Yahoo: Internet Company</span>\n<span class=\"go\">Django Software Foundation: No Tagline</span>\n</code></pre></div>\n<section id=\"avoiding-sql-injection\">\n<span id=\"avoiding-sql-injection-in-query-expressions\"></span><h4>Instealladh SQL a sheachaint<a class=\"heading-anchor\" href=\"#avoiding-sql-injection\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Ós rud é go ndéantar argóintí eochairfhocal <code class=\"docutils literal notranslate\"><span class=\"pre\">Func</span></code> do __init__ () ``(``**extra_context`)`` (<code class=\"docutils literal notranslate\"><span class=\"pre\">**extra_context</span></code>) idirphóilte isteach sa teaghrán SQL seachas a rith mar pharaiméadair cheistiúcháin (áit a n-éalfadh an tiománaí bunachar sonraí iad), ní mór ionchur úsáideora neamhiontaofa iontu.</p>\n<p>Mar shampla, má sholáthraítear <code class=\"docutils literal notranslate\"><span class=\"pre\">foshraithe</span></code> ón úsáideoir, tá an fheidhm seo leochaileach do instealladh SQL:</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=\"w\"> </span><span class=\"nn\">django.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Func</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Position</span><span class=\"p\">(</span><span class=\"n\">Func</span><span class=\"p\">):</span>\n    <span class=\"n\">function</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;POSITION&quot;</span>\n    <span class=\"n\">template</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;</span><span class=\"si\">%(function)s</span><span class=\"s2\">(&#39;</span><span class=\"si\">%(substring)s</span><span class=\"s2\">&#39; in </span><span class=\"si\">%(expressions)s</span><span class=\"s2\">)&quot;</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">expression</span><span class=\"p\">,</span> <span class=\"n\">substring</span><span class=\"p\">):</span>\n        <span class=\"c1\"># substring=substring is an SQL injection vulnerability!</span>\n        <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"n\">expression</span><span class=\"p\">,</span> <span class=\"n\">substring</span><span class=\"o\">=</span><span class=\"n\">substring</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Gineann an fheidhm seo teaghrán SQL gan aon pharaiméadair. Ós rud é go gcuirtear <code class=\"docutils literal notranslate\"><span class=\"pre\">foshraithe</span></code> ar aghaidh chuig <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>super (). __init__ () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>mar argóint eochairfhocal, déantar é a idirphóladh isteach sa teaghrán SQL sula seoltar an cheist chuig an mbunachar sonraí.</p>\n<p>Seo athscríobh ceartaithe:</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=\"w\"> </span><span class=\"nc\">Position</span><span class=\"p\">(</span><span class=\"n\">Func</span><span class=\"p\">):</span>\n    <span class=\"n\">function</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;POSITION&quot;</span>\n    <span class=\"n\">arg_joiner</span> <span class=\"o\">=</span> <span class=\"s2\">&quot; IN &quot;</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">expression</span><span class=\"p\">,</span> <span class=\"n\">substring</span><span class=\"p\">):</span>\n        <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"n\">substring</span><span class=\"p\">,</span> <span class=\"n\">expression</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Le “foshraitheacht” a rith mar argóint seasaimh ina ionad sin, cuirfear ar aghaidh mar pharaiméadar san fhiosrúchán bunachar sonraí.</p>\n</section>\n</section>\n<section id=\"adding-support-in-third-party-database-backends\">\n<h3>Tacaíocht a chur i gcúltaca bunachar sonraí tríú<a class=\"heading-anchor\" href=\"#adding-support-in-third-party-database-backends\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Má tá cúltaca bunachar sonraí á úsáid agat a úsáideann comhréir SQL difriúil le haghaidh feidhm áirithe, is féidir leat tacaíocht a chur leis trí mhoncaí modh nua a phaiteáil ar rang na feidhme.</p>\n<p>Abair go bhfuilimid ag scríobh cúltaca do Freastalaí SQL Microsoft a úsáideann an SQL <code class=\"docutils literal notranslate\"><span class=\"pre\">LEN</span></code> in ionad <code class=\"docutils literal notranslate\"><span class=\"pre\">LENGTH</span></code> don fheidhme:class: ~functions.LENGTH. Déanfaimid moncaí modh nua ar a dtugtar <code class=\"docutils literal notranslate\"><span class=\"pre\">as_sqlserver</span> <span class=\"pre\">()</span> <span class=\"pre\">``a</span> <span class=\"pre\">phaisteáil</span> <span class=\"pre\">ar</span> <span class=\"pre\">an</span> <span class=\"pre\">rang</span> <span class=\"pre\">``Length</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db.models.functions</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Length</span>\n\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">sqlserver_length</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"n\">compiler</span><span class=\"p\">,</span> <span class=\"n\">connection</span><span class=\"p\">):</span>\n    <span class=\"k\">return</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">as_sql</span><span class=\"p\">(</span><span class=\"n\">compiler</span><span class=\"p\">,</span> <span class=\"n\">connection</span><span class=\"p\">,</span> <span class=\"n\">function</span><span class=\"o\">=</span><span class=\"s2\">&quot;LEN&quot;</span><span class=\"p\">)</span>\n\n\n<span class=\"n\">Length</span><span class=\"o\">.</span><span class=\"n\">as_sqlserver</span> <span class=\"o\">=</span> <span class=\"n\">sqlserver_length</span>\n</code></pre></div>\n<p>Is féidir leat an SQL a shaincheapadh freisin ag baint úsáide as an paraiméadar <code class=\"docutils literal notranslate\"><span class=\"pre\">teimpléad</span></code> de as_sql () `.</p>\n<p>Úsáidimid <code class=\"docutils literal notranslate\"><span class=\"pre\">as_sqlserver</span> <span class=\"pre\">()</span> <span class=\"pre\">``toisc</span> <span class=\"pre\">go</span> <span class=\"pre\">bhfilleann</span> <span class=\"pre\">``django.db.connection.vendor</span></code> <code class=\"docutils literal notranslate\"><span class=\"pre\">sqlserver</span></code> don chúltaca.</p>\n<p>Is féidir le cúltaca tríú páirtí a gcuid feidhmeanna a chlárú i gcomhad <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__.py</span></code> barr leibhéal an phacáiste cúltaca nó i gcomhad <code class=\"docutils literal notranslate\"><span class=\"pre\">expressions.py</span></code> barr leibhéal (nó pacáiste) a allmhairítear ón leibhéal barr <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__.py</span></code>.</p>\n<p>&lt;django.apps.AppConfig.ready&gt;Maidir le tionscadail úsáideora atá ag iarraidh an cúltaca atá á úsáid acu a phaiseáil, ba chóir go mbeadh an cód seo i modh: meth: <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>AppConfig.ready () <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>.</p>\n</section>\n</section>","rootId":"query-expressions","toc":[{"title":"Uimhrithíocht tacaithe","anchor":"supported-arithmetic","children":[]},{"title":"Réimse aschuir","anchor":"output-field","children":[]},{"title":"Roinnt samplaí","anchor":"some-examples","children":[]},{"title":"Nathanna tógtha","anchor":"built-in-expressions","children":[{"title":"Nathanna ``F () ``","anchor":"f-expressions","children":[{"title":"Ag sliseadh abairtí ``F () ``","anchor":"slicing-f-expressions","children":[]},{"title":"Coinníollacha rása a sheachaint ag baint úsáide as ``F () ``","anchor":"avoiding-race-conditions-using-f","children":[]},{"title":"Leanann tascanna F () ``tar éis ``Model.save ()","anchor":"f-assignments-persist-after-model-save","children":[]},{"title":"Ag baint úsáide as ``F () ``i scagairí","anchor":"using-f-in-filters","children":[]},{"title":"Ag baint úsáide as ``F () ``le anótaí","anchor":"using-f-with-annotations","children":[]},{"title":"Ag baint úsáide as ``F () ``chun luachanna neall a shórtáil","anchor":"using-f-to-sort-null-values","children":[]},{"title":"Ag baint úsáide as ``F () ``le hoibríochtaí loighciúla","anchor":"using-f-with-logical-operations","children":[]}]},{"title":"Nathanna ``Func () ``","anchor":"func-expressions","children":[]},{"title":"Nathanna ``Comhiomlán () ``","anchor":"aggregate-expressions","children":[]},{"title":"Do Feidhmeanna Comhiomlánacha féin a","anchor":"creating-your-own-aggregate-functions","children":[]},{"title":"Nathanna ``Luach () ``","anchor":"value-expressions","children":[]},{"title":"Nathanna ``ExpressionWrapper () ``","anchor":"expressionwrapper-expressions","children":[]},{"title":"Nathanna coinníollach","anchor":"conditional-expressions","children":[]},{"title":"Nathanna ``Subquest () ``","anchor":"subquery-expressions","children":[{"title":"Tagairt do cholúin ón tacar ceisteanna seachtrach","anchor":"referencing-columns-from-the-outer-queryset","children":[]},{"title":"Focheisteanna a theorannú go colún amháin","anchor":"limiting-a-subquery-to-a-single-column","children":[]},{"title":"An fho-cheist a theorannú go sraith amháin","anchor":"limiting-the-subquery-to-a-single-row","children":[]},{"title":"Focheisteanna ``Tá ann () ``","anchor":"exists-subqueries","children":[]},{"title":"Scagadh ar nathanna Focheist () nó Existents () `","anchor":"filtering-on-a-subquery-or-exists-expressions","children":[]},{"title":"Ag baint úsáide as comhiomlánaithe laistigh de abairt ``Focheisteanna `","anchor":"using-aggregates-within-a-subquery-expression","children":[]}]},{"title":"Nathanna amh SQL","anchor":"raw-sql-expressions","children":[]},{"title":"Feidhmeanna fuinn","anchor":"window-functions","children":[{"title":"Frámaí","anchor":"frames","children":[]}]}]},{"title":"Eolas Teicniúil","anchor":"technical-information","children":[{"title":"API léiriú","anchor":"expression-api","children":[]},{"title":"Scríobh do chuid Nathanna Fiosrúcháin","anchor":"writing-your-own-query-expressions","children":[{"title":"Instealladh SQL a sheachaint","anchor":"avoiding-sql-injection","children":[]}]},{"title":"Tacaíocht a chur i gcúltaca bunachar sonraí tríú","anchor":"adding-support-in-third-party-database-backends","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"Tagairt API","url":"/ga/5.2/ref/"},{"docname":"ref/models/index","title":"Samhla","url":"/ga/5.2/ref/models/"}],"prev":{"docname":"ref/models/lookups","title":"Tagairt API cuardaigh","url":"/ga/5.2/ref/models/lookups/"},"next":{"docname":"ref/models/conditional-expressions","title":"Nathanna Coinníollach","url":"/ga/5.2/ref/models/conditional-expressions/"},"formats":{"html":"/ga/5.2/ref/models/expressions/","markdown":"/ga/5.2/ref/models/expressions.md","json":"/ga/5.2/ref/models/expressions.json"},"source":"https://github.com/django/django/blob/stable/5.2.x/docs/ref/models/expressions.txt","official":"https://docs.djangoproject.com/ga/5.2/ref/models/expressions/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}