{"title":"Fungsi Basisdata","version":"6.1","locale":"id","docname":"ref/models/database-functions","url":"/id/6.1/ref/models/database-functions/","canonical":"https://djangodocs.dev/id/6.1/ref/models/database-functions/","summary":"The classes documented below provide a way for users to use functions provided by the underlying database as annotations, aggregations, or filters in Django.","html":"<span id=\"database-functions\"></span><h1>Fungsi Basisdata<a class=\"heading-anchor\" href=\"#module-django.db.models.functions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>The classes documented below provide a way for users to use functions provided\nby the underlying database as annotations, aggregations, or filters in Django.\nFunctions are also <a class=\"reference internal\" href=\"/id/6.1/ref/models/expressions/\"><span class=\"doc\">expressions</span></a>, so they can be\nused and combined with other expressions like <a class=\"reference internal\" href=\"/id/6.1/ref/models/querysets/#aggregation-functions\"><span class=\"std std-ref\">aggregate functions</span></a>. See the <a class=\"reference internal\" href=\"/id/6.1/ref/models/expressions/#django.db.models.Func\" title=\"django.db.models.Func\"><code class=\"xref py py-class docutils literal notranslate\">Func</code></a> documentation\nfor security considerations.</p>\n<p>Kami akan menggunakan model berikut dalam contoh dari setiap fungsi:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span> <span class=\"nc\">Author</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n    age <span class=\"o\">=</span> models<span class=\"o\">.</span>PositiveIntegerField<span class=\"p\">(</span>null<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span> blank<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n    alias <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">,</span> null<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span> blank<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n    goes_by <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">,</span> null<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span> blank<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>We don't usually recommend allowing <code class=\"docutils literal notranslate\">null=True</code> for <code class=\"docutils literal notranslate\">CharField</code> since this\nallows the field to have two &quot;empty values&quot;, but it's important for the\n<code class=\"docutils literal notranslate\">Coalesce</code> example below.</p>\n<section id=\"comparison-and-conversion-functions\">\n<span id=\"comparison-functions\"></span><h2>Fungsi perbandingan dan perubahan<a class=\"heading-anchor\" href=\"#comparison-and-conversion-functions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"cast\">\n<h3><code class=\"docutils literal notranslate\">Cast</code><a class=\"heading-anchor\" href=\"#cast\"><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.functions.Cast\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Cast</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">output_field</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Cast\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Forces the result type of <code class=\"docutils literal notranslate\">expression</code> to be the one from <code class=\"docutils literal notranslate\">output_field</code>.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> FloatField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Cast\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>age<span class=\"o\">=</span><span class=\"mi\">25</span><span class=\"p\">,</span> name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Smith&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    age_as_float<span class=\"o\">=</span>Cast<span class=\"p\">(</span><span class=\"s2\">&quot;age&quot;</span><span class=\"p\">,</span> output_field<span class=\"o\">=</span>FloatField<span class=\"p\">()),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>author<span class=\"o\">.</span>age_as_float<span class=\"p\">)</span>\n<span class=\"go\">25.0</span>\n</code></pre></div>\n</section>\n<section id=\"coalesce\">\n<h3><code class=\"docutils literal notranslate\">Coalesce</code><a class=\"heading-anchor\" href=\"#coalesce\"><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.functions.Coalesce\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Coalesce</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>expressions</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Coalesce\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a list of at least two field names or expressions and returns the\nfirst non-null value (note that an empty string is not considered a null\nvalue). Each argument must be of a similar type, so mixing text and numbers\nwill result in a database error.</p>\n<p>Usage examples:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get a screen name from least to most public</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> Sum\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Coalesce\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Smith&quot;</span><span class=\"p\">,</span> goes_by<span class=\"o\">=</span><span class=\"s2\">&quot;Maggie&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>screen_name<span class=\"o\">=</span>Coalesce<span class=\"p\">(</span><span class=\"s2\">&quot;alias&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;goes_by&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;name&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>author<span class=\"o\">.</span>screen_name<span class=\"p\">)</span>\n<span class=\"go\">Maggie</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Prevent an aggregate Sum() from returning None</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># The aggregate default argument uses Coalesce() under the hood.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>aggregated <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>aggregate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    combined_age<span class=\"o\">=</span>Sum<span class=\"p\">(</span><span class=\"s2\">&quot;age&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    combined_age_default<span class=\"o\">=</span>Sum<span class=\"p\">(</span><span class=\"s2\">&quot;age&quot;</span><span class=\"p\">,</span> default<span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    combined_age_coalesce<span class=\"o\">=</span>Coalesce<span class=\"p\">(</span>Sum<span class=\"p\">(</span><span class=\"s2\">&quot;age&quot;</span><span class=\"p\">),</span> <span class=\"mi\">0</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>aggregated<span class=\"p\">[</span><span class=\"s2\">&quot;combined_age&quot;</span><span class=\"p\">])</span>\n<span class=\"go\">None</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>aggregated<span class=\"p\">[</span><span class=\"s2\">&quot;combined_age_default&quot;</span><span class=\"p\">])</span>\n<span class=\"go\">0</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>aggregated<span class=\"p\">[</span><span class=\"s2\">&quot;combined_age_coalesce&quot;</span><span class=\"p\">])</span>\n<span class=\"go\">0</span>\n</code></pre></div>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Peringatan</p>\n<p>A Python value passed to <code class=\"docutils literal notranslate\">Coalesce</code> on MySQL may be converted to an\nincorrect type unless explicitly cast to the correct database type:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> DateTimeField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Cast<span class=\"p\">,</span> Coalesce\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.utils</span> <span class=\"kn\">import</span> timezone\n<span class=\"gp\">&gt;&gt;&gt; </span>now <span class=\"o\">=</span> timezone<span class=\"o\">.</span>now<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Coalesce<span class=\"p\">(</span><span class=\"s2\">&quot;updated&quot;</span><span class=\"p\">,</span> Cast<span class=\"p\">(</span>now<span class=\"p\">,</span> DateTimeField<span class=\"p\">()))</span>\n</code></pre></div>\n</aside>\n</section>\n<section id=\"collate\">\n<h3><code class=\"docutils literal notranslate\">Collate</code><a class=\"heading-anchor\" href=\"#collate\"><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.functions.Collate\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Collate</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">collation</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Collate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Takes an expression and a collation name to query against.</p>\n<p>For example, to filter case-insensitively in SQLite:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>name<span class=\"o\">=</span>Collate<span class=\"p\">(</span>Value<span class=\"p\">(</span><span class=\"s2\">&quot;john&quot;</span><span class=\"p\">),</span> <span class=\"s2\">&quot;nocase&quot;</span><span class=\"p\">))</span>\n<span class=\"go\">&lt;QuerySet [&lt;Author: John&gt;, &lt;Author: john&gt;]&gt;</span>\n</code></pre></div>\n<p>It can also be used when ordering, for example with PostgreSQL:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span>Collate<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;et-x-icu&quot;</span><span class=\"p\">))</span>\n<span class=\"go\">&lt;QuerySet [&lt;Author: Ursula&gt;, &lt;Author: Veronika&gt;, &lt;Author: Ülle&gt;]&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"greatest\">\n<h3><code class=\"docutils literal notranslate\">Greatest</code><a class=\"heading-anchor\" href=\"#greatest\"><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.functions.Greatest\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Greatest</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>expressions</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Greatest\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a list of at least two field names or expressions and returns the\ngreatest value. Each argument must be of a similar type, so mixing text and\nnumbers will result in a database error.</p>\n<p>Contoh penggunaan:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span> <span class=\"nc\">Blog</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    body <span class=\"o\">=</span> models<span class=\"o\">.</span>TextField<span class=\"p\">()</span>\n    modified <span class=\"o\">=</span> models<span class=\"o\">.</span>DateTimeField<span class=\"p\">(</span>auto_now<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Comment</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    body <span class=\"o\">=</span> models<span class=\"o\">.</span>TextField<span class=\"p\">()</span>\n    modified <span class=\"o\">=</span> models<span class=\"o\">.</span>DateTimeField<span class=\"p\">(</span>auto_now<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n    blog <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>Blog<span class=\"p\">,</span> on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">)</span>\n</code></pre></div>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Greatest\n<span class=\"gp\">&gt;&gt;&gt; </span>blog <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>body<span class=\"o\">=</span><span class=\"s2\">&quot;Greatest is the best.&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>comment <span class=\"o\">=</span> Comment<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>body<span class=\"o\">=</span><span class=\"s2\">&quot;No, Least is better.&quot;</span><span class=\"p\">,</span> blog<span class=\"o\">=</span>blog<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>comments <span class=\"o\">=</span> Comment<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>last_updated<span class=\"o\">=</span>Greatest<span class=\"p\">(</span><span class=\"s2\">&quot;modified&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;blog__modified&quot;</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>annotated_comment <span class=\"o\">=</span> comments<span class=\"o\">.</span>get<span class=\"p\">()</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">annotated_comment.last_updated</code> akan menjadi paling baru dari <code class=\"docutils literal notranslate\">blog.modified</code> dan <code class=\"docutils literal notranslate\">comment.modified</code>.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Peringatan</p>\n<p>The behavior of <code class=\"docutils literal notranslate\">Greatest</code> when one or more expression may be <code class=\"docutils literal notranslate\">null</code>\nvaries between databases:</p>\n<ul class=\"simple\">\n<li><p>PostgreSQL: <code class=\"docutils literal notranslate\">Greatest</code> will return the largest non-null expression,\nor <code class=\"docutils literal notranslate\">null</code> if all expressions are <code class=\"docutils literal notranslate\">null</code>.</p></li>\n<li><p>SQLite, Oracle, dan MySQL: Jika pernyataan apapun adalah <code class=\"docutils literal notranslate\">null</code>, <code class=\"docutils literal notranslate\">Greatest</code> akan mengembalikan <code class=\"docutils literal notranslate\">null</code>.</p></li>\n</ul>\n<p>The PostgreSQL behavior can be emulated using <code class=\"docutils literal notranslate\">Coalesce</code> if you know\na sensible minimum value to provide as a default.</p>\n</aside>\n</section>\n<section id=\"least\">\n<h3><code class=\"docutils literal notranslate\">Least</code><a class=\"heading-anchor\" href=\"#least\"><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.functions.Least\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Least</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>expressions</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Least\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a list of at least two field names or expressions and returns the least\nvalue. Each argument must be of a similar type, so mixing text and numbers will\nresult in a database error.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Peringatan</p>\n<p>The behavior of <code class=\"docutils literal notranslate\">Least</code> when one or more expression may be <code class=\"docutils literal notranslate\">null</code>\nvaries between databases:</p>\n<ul class=\"simple\">\n<li><p>PostgreSQL: <code class=\"docutils literal notranslate\">Least</code> will return the smallest non-null expression,\nor <code class=\"docutils literal notranslate\">null</code> if all expressions are <code class=\"docutils literal notranslate\">null</code>.</p></li>\n<li><p>SQLite, Oracle, dan MySQL: Jika pernyataan apapun adalah <code class=\"docutils literal notranslate\">null</code>, <code class=\"docutils literal notranslate\">Least</code> akan mengembalikan <code class=\"docutils literal notranslate\">null</code>.</p></li>\n</ul>\n<p>The PostgreSQL behavior can be emulated using <code class=\"docutils literal notranslate\">Coalesce</code> if you know\na sensible maximum value to provide as a default.</p>\n</aside>\n</section>\n<section id=\"nullif\">\n<h3><code class=\"docutils literal notranslate\">NullIf</code><a class=\"heading-anchor\" href=\"#nullif\"><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.functions.NullIf\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">NullIf</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression1</em>, <em class=\"sig-param\">expression2</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.NullIf\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts two expressions and returns <code class=\"docutils literal notranslate\">None</code> if they are equal, otherwise\nreturns <code class=\"docutils literal notranslate\">expression1</code>.</p>\n<aside class=\"admonition-caveats-on-oracle admonition\" role=\"note\">\n<p class=\"admonition-title\">Caveats pada Oracle</p>\n<p>Due to an <a class=\"reference internal\" href=\"/id/6.1/ref/databases/#oracle-null-empty-strings\"><span class=\"std std-ref\">Oracle convention</span></a>, this\nfunction returns the empty string instead of <code class=\"docutils literal notranslate\">None</code> when the expressions\nare of type <a class=\"reference internal\" href=\"/id/6.1/ref/models/fields/#django.db.models.CharField\" title=\"django.db.models.CharField\"><code class=\"xref py py-class docutils literal notranslate\">CharField</code></a>.</p>\n<p>Passing <code class=\"docutils literal notranslate\">Value(None)</code> to <code class=\"docutils literal notranslate\">expression1</code> is prohibited on Oracle since\nOracle doesn't accept <code class=\"docutils literal notranslate\">NULL</code> as the first argument.</p>\n</aside>\n</section>\n</section>\n<section id=\"date-functions\">\n<span id=\"id1\"></span><h2>Fungsi tanggal<a class=\"heading-anchor\" href=\"#date-functions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Kami akan menggunakan model berikut dalam contoh dari setiap fungsi:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span> <span class=\"nc\">Experiment</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    start_datetime <span class=\"o\">=</span> models<span class=\"o\">.</span>DateTimeField<span class=\"p\">()</span>\n    start_date <span class=\"o\">=</span> models<span class=\"o\">.</span>DateField<span class=\"p\">(</span>null<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span> blank<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n    start_time <span class=\"o\">=</span> models<span class=\"o\">.</span>TimeField<span class=\"p\">(</span>null<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span> blank<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n    end_datetime <span class=\"o\">=</span> models<span class=\"o\">.</span>DateTimeField<span class=\"p\">(</span>null<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span> blank<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n    end_date <span class=\"o\">=</span> models<span class=\"o\">.</span>DateField<span class=\"p\">(</span>null<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span> blank<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n    end_time <span class=\"o\">=</span> models<span class=\"o\">.</span>TimeField<span class=\"p\">(</span>null<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span> blank<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<section id=\"extract\">\n<h3><code class=\"docutils literal notranslate\">Extract</code><a class=\"heading-anchor\" href=\"#extract\"><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.functions.Extract\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Extract</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">lookup_name<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Extract\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Mengambil komponen tanggal sebagai angka.</p>\n<p>Takes an <code class=\"docutils literal notranslate\">expression</code> representing a <code class=\"docutils literal notranslate\">DateField</code>, <code class=\"docutils literal notranslate\">DateTimeField</code>,\n<code class=\"docutils literal notranslate\">TimeField</code>, or <code class=\"docutils literal notranslate\">DurationField</code> and a <code class=\"docutils literal notranslate\">lookup_name</code>, and returns the part\nof the date referenced by <code class=\"docutils literal notranslate\">lookup_name</code> as an <code class=\"docutils literal notranslate\">IntegerField</code>.\nDjango usually uses the databases' extract function, so you may use any\n<code class=\"docutils literal notranslate\">lookup_name</code> that your database supports. A <code class=\"docutils literal notranslate\">tzinfo</code> subclass, usually\nprovided by <a class=\"reference external\" href=\"https://docs.python.org/3/library/zoneinfo.html#module-zoneinfo\" title=\"(di Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\">zoneinfo</code></a>, can be passed to extract a value in a specific\ntimezone.</p>\n<p>Diberikan datetime <code class=\"docutils literal notranslate\">2015-06-15 23:30:01.000321+00:00</code>, <code class=\"docutils literal notranslate\">lookup_name</code> siap-pakai mengembalikan:</p>\n<ul class=\"simple\">\n<li><p>&quot;year&quot;: 2015</p></li>\n<li><p>&quot;iso_year&quot;: 2015</p></li>\n<li><p>&quot;quarter&quot;: 2</p></li>\n<li><p>&quot;month&quot;: 6</p></li>\n<li><p>&quot;day&quot;: 15</p></li>\n<li><p>&quot;week&quot;: 25</p></li>\n<li><p>&quot;week_day&quot;: 2</p></li>\n<li><p>&quot;iso_week_day&quot;: 1</p></li>\n<li><p>&quot;hour&quot;: 23</p></li>\n<li><p>&quot;minute&quot;: 30</p></li>\n<li><p>&quot;second&quot;: 1</p></li>\n</ul>\n<p>If a different timezone like <code class=\"docutils literal notranslate\">Australia/Melbourne</code> is active in Django, then\nthe datetime is converted to the timezone before the value is extracted. The\ntimezone offset for Melbourne in the example date above is +10:00. The values\nreturned when this timezone is active will be the same as above except for:</p>\n<ul class=\"simple\">\n<li><p>&quot;day&quot;: 16</p></li>\n<li><p>&quot;week_day&quot;: 3</p></li>\n<li><p>&quot;iso_week_day&quot;: 2</p></li>\n<li><p>&quot;hour&quot;: 9</p></li>\n</ul>\n<aside class=\"admonition-week-day-values admonition\" role=\"note\">\n<p class=\"admonition-title\">Nilai-nilai <code class=\"docutils literal notranslate\">week_day</code></p>\n<p>The <code class=\"docutils literal notranslate\">week_day</code> <code class=\"docutils literal notranslate\">lookup_type</code> is calculated differently from most\ndatabases and from Python's standard functions. This function will return\n<code class=\"docutils literal notranslate\">1</code> for Sunday, <code class=\"docutils literal notranslate\">2</code> for Monday, through <code class=\"docutils literal notranslate\">7</code> for Saturday.</p>\n<p>The equivalent calculation in Python is:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">datetime</span> <span class=\"kn\">import</span> datetime\n<span class=\"gp\">&gt;&gt;&gt; </span>dt <span class=\"o\">=</span> datetime<span class=\"p\">(</span><span class=\"mi\">2015</span><span class=\"p\">,</span> <span class=\"mi\">6</span><span class=\"p\">,</span> <span class=\"mi\">15</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"p\">(</span>dt<span class=\"o\">.</span>isoweekday<span class=\"p\">()</span> <span class=\"o\">%</span> <span class=\"mi\">7</span><span class=\"p\">)</span> <span class=\"o\">+</span> <span class=\"mi\">1</span>\n<span class=\"go\">2</span>\n</code></pre></div>\n</aside>\n<aside class=\"admonition-week-values admonition\" role=\"note\">\n<p class=\"admonition-title\">Nilai-nilai <code class=\"docutils literal notranslate\">week</code></p>\n<p>The <code class=\"docutils literal notranslate\">week</code> <code class=\"docutils literal notranslate\">lookup_type</code> is calculated based on <a class=\"reference external\" href=\"https://en.wikipedia.org/wiki/ISO-8601\">ISO-8601</a>, i.e.,\na week starts on a Monday. The first week of a year is the one that\ncontains the year's first Thursday, i.e. the first week has the majority\n(four or more) of its days in the year. The value returned is in the range\n1 to 52 or 53.</p>\n</aside>\n<p>Each <code class=\"docutils literal notranslate\">lookup_name</code> above has a corresponding <code class=\"docutils literal notranslate\">Extract</code> subclass (listed\nbelow) that should typically be used instead of the more verbose equivalent,\ne.g. use <code class=\"docutils literal notranslate\">ExtractYear(...)</code> rather than <code class=\"docutils literal notranslate\">Extract(..., lookup_name='year')</code>.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">datetime</span> <span class=\"kn\">import</span> datetime\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Extract\n<span class=\"gp\">&gt;&gt;&gt; </span>start <span class=\"o\">=</span> datetime<span class=\"p\">(</span><span class=\"mi\">2015</span><span class=\"p\">,</span> <span class=\"mi\">6</span><span class=\"p\">,</span> <span class=\"mi\">15</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>end <span class=\"o\">=</span> datetime<span class=\"p\">(</span><span class=\"mi\">2015</span><span class=\"p\">,</span> <span class=\"mi\">7</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    start_datetime<span class=\"o\">=</span>start<span class=\"p\">,</span> start_date<span class=\"o\">=</span>start<span class=\"o\">.</span>date<span class=\"p\">(),</span> end_datetime<span class=\"o\">=</span>end<span class=\"p\">,</span> end_date<span class=\"o\">=</span>end<span class=\"o\">.</span>date<span class=\"p\">()</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Add the experiment start year as a field in the QuerySet.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>experiment <span class=\"o\">=</span> Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    start_year<span class=\"o\">=</span>Extract<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;year&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>experiment<span class=\"o\">.</span>start_year\n<span class=\"go\">2015</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># How many experiments completed in the same year in which they started?</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>start_datetime__year<span class=\"o\">=</span>Extract<span class=\"p\">(</span><span class=\"s2\">&quot;end_datetime&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;year&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>count<span class=\"p\">()</span>\n<span class=\"go\">1</span>\n</code></pre></div>\n<aside class=\"admonition-extract-uses-the-active-timezone admonition\" role=\"note\">\n<p class=\"admonition-title\"><code class=\"docutils literal notranslate\">Extract()</code> uses the active timezone</p>\n<p>When <a class=\"reference internal\" href=\"/id/6.1/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\">USE_TZ</code></a> is <code class=\"docutils literal notranslate\">True</code>, Django saves values in <code class=\"docutils literal notranslate\">UTC</code> (or the\nconnection's configured timezone). Since <code class=\"docutils literal notranslate\">tzinfo</code> defaults to\n<a class=\"reference internal\" href=\"/id/6.1/ref/settings/#std-setting-TIME_ZONE\"><code class=\"xref std std-setting docutils literal notranslate\">TIME_ZONE</code></a> when not provided, you may need to provide an explicit\n<code class=\"docutils literal notranslate\">tzinfo</code> to compare extracted values. The following example demonstrates\nwhat happens when &quot;Europe/Berlin&quot; is active and how to adjust for this:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.utils</span> <span class=\"kn\">import</span> timezone\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">datetime</span> <span class=\"kn\">import</span> UTC<span class=\"p\">,</span> datetime\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> ExtractHour\n<span class=\"gp\">&gt;&gt;&gt; </span>start <span class=\"o\">=</span> datetime<span class=\"p\">(</span><span class=\"mi\">2015</span><span class=\"p\">,</span> <span class=\"mi\">6</span><span class=\"p\">,</span> <span class=\"mi\">15</span><span class=\"p\">,</span> <span class=\"mi\">14</span><span class=\"p\">,</span> <span class=\"mi\">30</span><span class=\"p\">,</span> <span class=\"mi\">50</span><span class=\"p\">,</span> <span class=\"mi\">321</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>start <span class=\"o\">=</span> timezone<span class=\"o\">.</span>make_aware<span class=\"p\">(</span>start<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>exp <span class=\"o\">=</span> Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>start_datetime<span class=\"o\">=</span>start<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>find_this_exp <span class=\"o\">=</span> Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    extract_hour_start<span class=\"o\">=</span>ExtractHour<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>filter<span class=\"p\">(</span>extract_hour_start<span class=\"o\">=</span>start<span class=\"o\">.</span>hour<span class=\"p\">)</span>\n<span class=\"go\"># Comparing local time to UTC finds no results.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>find_this_exp<span class=\"o\">.</span>count<span class=\"p\">()</span>\n<span class=\"go\">0</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>find_this_exp_adjusted <span class=\"o\">=</span> Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    extract_hour_start<span class=\"o\">=</span>ExtractHour<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">,</span> tzinfo<span class=\"o\">=</span>UTC<span class=\"p\">)</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>filter<span class=\"p\">(</span>extract_hour_start<span class=\"o\">=</span>start<span class=\"o\">.</span>hour<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>find_this_exp_adjusted<span class=\"o\">.</span>count<span class=\"p\">()</span>\n<span class=\"go\">1</span>\n</code></pre></div>\n</aside>\n<section id=\"datefield-extracts\">\n<h4>Kutipan <code class=\"docutils literal notranslate\">DateField</code><a class=\"heading-anchor\" href=\"#datefield-extracts\"><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.functions.ExtractYear\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ExtractYear</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.ExtractYear\"><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\">\n<span class=\"sig-name descname\">lookup_name = 'year'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.ExtractIsoYear\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ExtractIsoYear</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.ExtractIsoYear\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the ISO-8601 week-numbering year.</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\">\n<span class=\"sig-name descname\">lookup_name = 'iso_year'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.ExtractMonth\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ExtractMonth</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.ExtractMonth\"><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\">\n<span class=\"sig-name descname\">lookup_name = 'month'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.ExtractDay\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ExtractDay</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.ExtractDay\"><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\">\n<span class=\"sig-name descname\">lookup_name = 'day'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.ExtractWeekDay\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ExtractWeekDay</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.ExtractWeekDay\"><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\">\n<span class=\"sig-name descname\">lookup_name = 'week_day'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.ExtractIsoWeekDay\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ExtractIsoWeekDay</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.ExtractIsoWeekDay\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the ISO-8601 week day with day 1 being Monday and day 7 being\nSunday.</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\">\n<span class=\"sig-name descname\">lookup_name = 'iso_week_day'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.ExtractWeek\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ExtractWeek</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.ExtractWeek\"><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\">\n<span class=\"sig-name descname\">lookup_name = 'week'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.ExtractQuarter\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ExtractQuarter</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.ExtractQuarter\"><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\">\n<span class=\"sig-name descname\">lookup_name = 'quarter'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<p>These are logically equivalent to <code class=\"docutils literal notranslate\">Extract('date_field', lookup_name)</code>. Each\nclass is also a <code class=\"docutils literal notranslate\">Transform</code> registered on <code class=\"docutils literal notranslate\">DateField</code> and <code class=\"docutils literal notranslate\">DateTimeField</code>\nas <code class=\"docutils literal notranslate\">__(lookup_name)</code>, e.g. <code class=\"docutils literal notranslate\">__year</code>.</p>\n<p>Since <code class=\"docutils literal notranslate\">DateField</code>s don't have a time component, only <code class=\"docutils literal notranslate\">Extract</code> subclasses\nthat deal with date-parts can be used with <code class=\"docutils literal notranslate\">DateField</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=\"kn\">from</span> <span class=\"nn\">datetime</span> <span class=\"kn\">import</span> UTC<span class=\"p\">,</span> datetime\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> <span class=\"p\">(</span>\n<span class=\"gp\">... </span>    ExtractDay<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    ExtractMonth<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    ExtractQuarter<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    ExtractWeek<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    ExtractIsoWeekDay<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    ExtractWeekDay<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    ExtractIsoYear<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    ExtractYear<span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>start_2015 <span class=\"o\">=</span> datetime<span class=\"p\">(</span><span class=\"mi\">2015</span><span class=\"p\">,</span> <span class=\"mi\">6</span><span class=\"p\">,</span> <span class=\"mi\">15</span><span class=\"p\">,</span> <span class=\"mi\">23</span><span class=\"p\">,</span> <span class=\"mi\">30</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">,</span> tzinfo<span class=\"o\">=</span>UTC<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>end_2015 <span class=\"o\">=</span> datetime<span class=\"p\">(</span><span class=\"mi\">2015</span><span class=\"p\">,</span> <span class=\"mi\">6</span><span class=\"p\">,</span> <span class=\"mi\">16</span><span class=\"p\">,</span> <span class=\"mi\">13</span><span class=\"p\">,</span> <span class=\"mi\">11</span><span class=\"p\">,</span> <span class=\"mi\">27</span><span class=\"p\">,</span> tzinfo<span class=\"o\">=</span>UTC<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    start_datetime<span class=\"o\">=</span>start_2015<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    start_date<span class=\"o\">=</span>start_2015<span class=\"o\">.</span>date<span class=\"p\">(),</span>\n<span class=\"gp\">... </span>    end_datetime<span class=\"o\">=</span>end_2015<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    end_date<span class=\"o\">=</span>end_2015<span class=\"o\">.</span>date<span class=\"p\">(),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    year<span class=\"o\">=</span>ExtractYear<span class=\"p\">(</span><span class=\"s2\">&quot;start_date&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    isoyear<span class=\"o\">=</span>ExtractIsoYear<span class=\"p\">(</span><span class=\"s2\">&quot;start_date&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    quarter<span class=\"o\">=</span>ExtractQuarter<span class=\"p\">(</span><span class=\"s2\">&quot;start_date&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    month<span class=\"o\">=</span>ExtractMonth<span class=\"p\">(</span><span class=\"s2\">&quot;start_date&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    week<span class=\"o\">=</span>ExtractWeek<span class=\"p\">(</span><span class=\"s2\">&quot;start_date&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    day<span class=\"o\">=</span>ExtractDay<span class=\"p\">(</span><span class=\"s2\">&quot;start_date&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    weekday<span class=\"o\">=</span>ExtractWeekDay<span class=\"p\">(</span><span class=\"s2\">&quot;start_date&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    isoweekday<span class=\"o\">=</span>ExtractIsoWeekDay<span class=\"p\">(</span><span class=\"s2\">&quot;start_date&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>values<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;year&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;isoyear&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;quarter&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;month&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;week&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;day&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;weekday&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;isoweekday&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>get<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    end_date__year<span class=\"o\">=</span>ExtractYear<span class=\"p\">(</span><span class=\"s2\">&quot;start_date&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"go\">{&#39;year&#39;: 2015, &#39;isoyear&#39;: 2015, &#39;quarter&#39;: 2, &#39;month&#39;: 6, &#39;week&#39;: 25,</span>\n<span class=\"go\"> &#39;day&#39;: 15, &#39;weekday&#39;: 2, &#39;isoweekday&#39;: 1}</span>\n</code></pre></div>\n</section>\n<section id=\"datetimefield-extracts\">\n<h4>Kutipan <code class=\"docutils literal notranslate\">DateTimeField</code><a class=\"heading-anchor\" href=\"#datetimefield-extracts\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>In addition to the following, all extracts for <code class=\"docutils literal notranslate\">DateField</code> listed above may\nalso be used on <code class=\"docutils literal notranslate\">DateTimeField</code>s .</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.ExtractHour\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ExtractHour</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.ExtractHour\"><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\">\n<span class=\"sig-name descname\">lookup_name = 'hour'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.ExtractMinute\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ExtractMinute</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.ExtractMinute\"><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\">\n<span class=\"sig-name descname\">lookup_name = 'minute'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.ExtractSecond\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ExtractSecond</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.ExtractSecond\"><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\">\n<span class=\"sig-name descname\">lookup_name = 'second'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<p>These are logically equivalent to <code class=\"docutils literal notranslate\">Extract('datetime_field', lookup_name)</code>.\nEach class is also a <code class=\"docutils literal notranslate\">Transform</code> registered on <code class=\"docutils literal notranslate\">DateTimeField</code> as\n<code class=\"docutils literal notranslate\">__(lookup_name)</code>, e.g. <code class=\"docutils literal notranslate\">__minute</code>.</p>\n<p><code class=\"docutils literal notranslate\">DateTimeField</code> examples:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">datetime</span> <span class=\"kn\">import</span> UTC<span class=\"p\">,</span> datetime\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> <span class=\"p\">(</span>\n<span class=\"gp\">... </span>    ExtractDay<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    ExtractHour<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    ExtractMinute<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    ExtractMonth<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    ExtractQuarter<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    ExtractSecond<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    ExtractWeek<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    ExtractIsoWeekDay<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    ExtractWeekDay<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    ExtractIsoYear<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    ExtractYear<span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>start_2015 <span class=\"o\">=</span> datetime<span class=\"p\">(</span><span class=\"mi\">2015</span><span class=\"p\">,</span> <span class=\"mi\">6</span><span class=\"p\">,</span> <span class=\"mi\">15</span><span class=\"p\">,</span> <span class=\"mi\">23</span><span class=\"p\">,</span> <span class=\"mi\">30</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">,</span> tzinfo<span class=\"o\">=</span>UTC<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>end_2015 <span class=\"o\">=</span> datetime<span class=\"p\">(</span><span class=\"mi\">2015</span><span class=\"p\">,</span> <span class=\"mi\">6</span><span class=\"p\">,</span> <span class=\"mi\">16</span><span class=\"p\">,</span> <span class=\"mi\">13</span><span class=\"p\">,</span> <span class=\"mi\">11</span><span class=\"p\">,</span> <span class=\"mi\">27</span><span class=\"p\">,</span> tzinfo<span class=\"o\">=</span>UTC<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    start_datetime<span class=\"o\">=</span>start_2015<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    start_date<span class=\"o\">=</span>start_2015<span class=\"o\">.</span>date<span class=\"p\">(),</span>\n<span class=\"gp\">... </span>    end_datetime<span class=\"o\">=</span>end_2015<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    end_date<span class=\"o\">=</span>end_2015<span class=\"o\">.</span>date<span class=\"p\">(),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    year<span class=\"o\">=</span>ExtractYear<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    isoyear<span class=\"o\">=</span>ExtractIsoYear<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    quarter<span class=\"o\">=</span>ExtractQuarter<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    month<span class=\"o\">=</span>ExtractMonth<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    week<span class=\"o\">=</span>ExtractWeek<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    day<span class=\"o\">=</span>ExtractDay<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    weekday<span class=\"o\">=</span>ExtractWeekDay<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    isoweekday<span class=\"o\">=</span>ExtractIsoWeekDay<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    hour<span class=\"o\">=</span>ExtractHour<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    minute<span class=\"o\">=</span>ExtractMinute<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    second<span class=\"o\">=</span>ExtractSecond<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>values<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;year&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;isoyear&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;month&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;week&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;day&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;weekday&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;isoweekday&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;hour&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;minute&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>    <span class=\"s2\">&quot;second&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>get<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    end_datetime__year<span class=\"o\">=</span>ExtractYear<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"go\">{&#39;year&#39;: 2015, &#39;isoyear&#39;: 2015, &#39;quarter&#39;: 2, &#39;month&#39;: 6, &#39;week&#39;: 25,</span>\n<span class=\"go\"> &#39;day&#39;: 15, &#39;weekday&#39;: 2, &#39;isoweekday&#39;: 1, &#39;hour&#39;: 23, &#39;minute&#39;: 30,</span>\n<span class=\"go\"> &#39;second&#39;: 1}</span>\n</code></pre></div>\n<p>When <a class=\"reference internal\" href=\"/id/6.1/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\">USE_TZ</code></a> is <code class=\"docutils literal notranslate\">True</code> then datetimes are stored in the database\nin UTC. If a different timezone is active in Django, the datetime is converted\nto that timezone before the value is extracted. The example below converts to\nthe Melbourne timezone (UTC +10:00), which changes the day, weekday, and hour\nvalues that are returned:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.utils</span> <span class=\"kn\">import</span> timezone\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">import</span> <span class=\"nn\">zoneinfo</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>melb <span class=\"o\">=</span> zoneinfo<span class=\"o\">.</span>ZoneInfo<span class=\"p\">(</span><span class=\"s2\">&quot;Australia/Melbourne&quot;</span><span class=\"p\">)</span>  <span class=\"c1\"># UTC+10:00</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">with</span> timezone<span class=\"o\">.</span>override<span class=\"p\">(</span>melb<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>        day<span class=\"o\">=</span>ExtractDay<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>        weekday<span class=\"o\">=</span>ExtractWeekDay<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>        isoweekday<span class=\"o\">=</span>ExtractIsoWeekDay<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>        hour<span class=\"o\">=</span>ExtractHour<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    <span class=\"p\">)</span><span class=\"o\">.</span>values<span class=\"p\">(</span><span class=\"s2\">&quot;day&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;weekday&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;isoweekday&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;hour&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>get<span class=\"p\">(</span>\n<span class=\"gp\">... </span>        end_datetime__year<span class=\"o\">=</span>ExtractYear<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    <span class=\"p\">)</span>\n<span class=\"gp\">...</span>\n<span class=\"go\">{&#39;day&#39;: 16, &#39;weekday&#39;: 3, &#39;isoweekday&#39;: 2, &#39;hour&#39;: 9}</span>\n</code></pre></div>\n<p>Explicitly passing the timezone to the <code class=\"docutils literal notranslate\">Extract</code> function behaves in the same\nway, and takes priority over an active timezone:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">import</span> <span class=\"nn\">zoneinfo</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>melb <span class=\"o\">=</span> zoneinfo<span class=\"o\">.</span>ZoneInfo<span class=\"p\">(</span><span class=\"s2\">&quot;Australia/Melbourne&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    day<span class=\"o\">=</span>ExtractDay<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">,</span> tzinfo<span class=\"o\">=</span>melb<span class=\"p\">),</span>\n<span class=\"gp\">... </span>    weekday<span class=\"o\">=</span>ExtractWeekDay<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">,</span> tzinfo<span class=\"o\">=</span>melb<span class=\"p\">),</span>\n<span class=\"gp\">... </span>    isoweekday<span class=\"o\">=</span>ExtractIsoWeekDay<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">,</span> tzinfo<span class=\"o\">=</span>melb<span class=\"p\">),</span>\n<span class=\"gp\">... </span>    hour<span class=\"o\">=</span>ExtractHour<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">,</span> tzinfo<span class=\"o\">=</span>melb<span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>values<span class=\"p\">(</span><span class=\"s2\">&quot;day&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;weekday&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;isoweekday&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;hour&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>get<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    end_datetime__year<span class=\"o\">=</span>ExtractYear<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"go\">{&#39;day&#39;: 16, &#39;weekday&#39;: 3, &#39;isoweekday&#39;: 2, &#39;hour&#39;: 9}</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"now\">\n<h3><code class=\"docutils literal notranslate\">Now</code><a class=\"heading-anchor\" href=\"#now\"><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.functions.Now\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Now</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Now\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns the database server's current date and time when the query is executed,\ntypically using the SQL <code class=\"docutils literal notranslate\">CURRENT_TIMESTAMP</code>.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Now\n<span class=\"gp\">&gt;&gt;&gt; </span>Article<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>published__lte<span class=\"o\">=</span>Now<span class=\"p\">())</span>\n<span class=\"go\">&lt;QuerySet [&lt;Article: How to Django&gt;]&gt;</span>\n</code></pre></div>\n<aside class=\"admonition-postgresql-considerations admonition\" role=\"note\">\n<p class=\"admonition-title\">Pertimbangan PostgreSQL</p>\n<p>On PostgreSQL, the SQL <code class=\"docutils literal notranslate\">CURRENT_TIMESTAMP</code> returns the time that the\ncurrent transaction started. Therefore for cross-database compatibility,\n<code class=\"docutils literal notranslate\">Now()</code> uses <code class=\"docutils literal notranslate\">STATEMENT_TIMESTAMP</code> instead. If you need the transaction\ntimestamp, use <a class=\"reference internal\" href=\"/id/6.1/ref/contrib/postgres/functions/#django.contrib.postgres.functions.TransactionNow\" title=\"django.contrib.postgres.functions.TransactionNow\"><code class=\"xref py py-class docutils literal notranslate\">django.contrib.postgres.functions.TransactionNow</code></a>.</p>\n</aside>\n<aside class=\"admonition-oracle admonition\" role=\"note\">\n<p class=\"admonition-title\">Oracle</p>\n<p>On Oracle, the SQL <code class=\"docutils literal notranslate\">LOCALTIMESTAMP</code> is used to avoid issues with casting\n<code class=\"docutils literal notranslate\">CURRENT_TIMESTAMP</code> to <code class=\"docutils literal notranslate\">DateTimeField</code>.</p>\n</aside>\n</section>\n<section id=\"trunc\">\n<h3><code class=\"docutils literal notranslate\">Trunc</code><a class=\"heading-anchor\" href=\"#trunc\"><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.functions.Trunc\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Trunc</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">kind</em>, <em class=\"sig-param\">output_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Trunc\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Memotong tanggal sampai pada komponen penting.</p>\n<p>When you only care if something happened in a particular year, hour, or day,\nbut not the exact second, then <code class=\"docutils literal notranslate\">Trunc</code> (and its subclasses) can be useful to\nfilter or aggregate your data. For example, you can use <code class=\"docutils literal notranslate\">Trunc</code> to calculate\nthe number of sales per day.</p>\n<p><code class=\"docutils literal notranslate\">Trunc</code> takes a single <code class=\"docutils literal notranslate\">expression</code>, representing a <code class=\"docutils literal notranslate\">DateField</code>,\n<code class=\"docutils literal notranslate\">TimeField</code>, or <code class=\"docutils literal notranslate\">DateTimeField</code>, a <code class=\"docutils literal notranslate\">kind</code> representing a date or time\npart, and an <code class=\"docutils literal notranslate\">output_field</code> that's either <code class=\"docutils literal notranslate\">DateTimeField()</code>,\n<code class=\"docutils literal notranslate\">TimeField()</code>, or <code class=\"docutils literal notranslate\">DateField()</code>. It returns a datetime, date, or time\ndepending on <code class=\"docutils literal notranslate\">output_field</code>, with fields up to <code class=\"docutils literal notranslate\">kind</code> set to their minimum\nvalue. If <code class=\"docutils literal notranslate\">output_field</code> is omitted, it will default to the <code class=\"docutils literal notranslate\">output_field</code>\nof <code class=\"docutils literal notranslate\">expression</code>. A <code class=\"docutils literal notranslate\">tzinfo</code> subclass, usually provided by <a class=\"reference external\" href=\"https://docs.python.org/3/library/zoneinfo.html#module-zoneinfo\" title=\"(di Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\">zoneinfo</code></a>,\ncan be passed to truncate a value in a specific timezone.</p>\n<p>Diberikan datetime <code class=\"docutils literal notranslate\">2015-06-15 14:30:50.000321+00:00</code>, kembalian <code class=\"docutils literal notranslate\">kind</code> siap-pakai:</p>\n<ul class=\"simple\">\n<li><p>&quot;year&quot;: 2015-01-01 00:00:00+00:00</p></li>\n<li><p>&quot;quarter&quot;: 2015-04-01 00:00:00+00:00</p></li>\n<li><p>&quot;month&quot;: 2015-06-01 00:00:00+00:00</p></li>\n<li><p>&quot;week&quot;: 2015-06-15 00:00:00+00:00</p></li>\n<li><p>&quot;day&quot;: 2015-06-15 00:00:00+00:00</p></li>\n<li><p>&quot;hour&quot;: 2015-06-15 14:00:00+00:00</p></li>\n<li><p>&quot;minute&quot;: 2015-06-15 14:30:00+00:00</p></li>\n<li><p>&quot;second&quot;: 2015-06-15 14:30:50+00:00</p></li>\n</ul>\n<p>If a different timezone like <code class=\"docutils literal notranslate\">Australia/Melbourne</code> is active in Django, then\nthe datetime is converted to the new timezone before the value is truncated.\nThe timezone offset for Melbourne in the example date above is +10:00. The\nvalues returned when this timezone is active will be:</p>\n<ul class=\"simple\">\n<li><p>&quot;year&quot;: 2015-01-01 00:00:00+11:00</p></li>\n<li><p>&quot;quarter&quot;: 2015-04-01 00:00:00+11:00</p></li>\n<li><p>&quot;month&quot;: 2015-06-01 00:00:00+10:00</p></li>\n<li><p>&quot;week&quot;: 2015-06-15 00:00:00+10:00</p></li>\n<li><p>&quot;day&quot;: 2015-06-16 00:00:00+10:00</p></li>\n<li><p>&quot;hour&quot;: 2015-06-16 00:00:00+10:00</p></li>\n<li><p>&quot;minute&quot;: 2015-06-16 00:30:00+10:00</p></li>\n<li><p>&quot;second&quot;: 2015-06-16 00:30:50+10:00</p></li>\n</ul>\n<p>The year and quarter have an offset of +11:00 because each result falls before\nthe daylight saving time transition.</p>\n<p>Each <code class=\"docutils literal notranslate\">kind</code> above has a corresponding <code class=\"docutils literal notranslate\">Trunc</code> subclass (listed below) that\nshould typically be used instead of the more verbose equivalent,\ne.g. use <code class=\"docutils literal notranslate\">TruncYear(...)</code> rather than <code class=\"docutils literal notranslate\">Trunc(..., kind='year')</code>.</p>\n<p>The subclasses are all defined as transforms, but they aren't registered with\nany fields, because the lookup names are already reserved by the <code class=\"docutils literal notranslate\">Extract</code>\nsubclasses.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">datetime</span> <span class=\"kn\">import</span> datetime\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> Count<span class=\"p\">,</span> DateTimeField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Trunc\n<span class=\"gp\">&gt;&gt;&gt; </span>Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>start_datetime<span class=\"o\">=</span>datetime<span class=\"p\">(</span><span class=\"mi\">2015</span><span class=\"p\">,</span> <span class=\"mi\">6</span><span class=\"p\">,</span> <span class=\"mi\">15</span><span class=\"p\">,</span> <span class=\"mi\">14</span><span class=\"p\">,</span> <span class=\"mi\">30</span><span class=\"p\">,</span> <span class=\"mi\">50</span><span class=\"p\">,</span> <span class=\"mi\">321</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>start_datetime<span class=\"o\">=</span>datetime<span class=\"p\">(</span><span class=\"mi\">2015</span><span class=\"p\">,</span> <span class=\"mi\">6</span><span class=\"p\">,</span> <span class=\"mi\">15</span><span class=\"p\">,</span> <span class=\"mi\">14</span><span class=\"p\">,</span> <span class=\"mi\">40</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">,</span> <span class=\"mi\">123</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>start_datetime<span class=\"o\">=</span>datetime<span class=\"p\">(</span><span class=\"mi\">2015</span><span class=\"p\">,</span> <span class=\"mi\">12</span><span class=\"p\">,</span> <span class=\"mi\">25</span><span class=\"p\">,</span> <span class=\"mi\">10</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">27</span><span class=\"p\">,</span> <span class=\"mi\">999</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>experiments_per_day <span class=\"o\">=</span> <span class=\"p\">(</span>\n<span class=\"gp\">... </span>    Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>        start_day<span class=\"o\">=</span>Trunc<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;day&quot;</span><span class=\"p\">,</span> output_field<span class=\"o\">=</span>DateTimeField<span class=\"p\">())</span>\n<span class=\"gp\">... </span>    <span class=\"p\">)</span>\n<span class=\"gp\">... </span>    <span class=\"o\">.</span>values<span class=\"p\">(</span><span class=\"s2\">&quot;start_day&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    <span class=\"o\">.</span>annotate<span class=\"p\">(</span>experiments<span class=\"o\">=</span>Count<span class=\"p\">(</span><span class=\"s2\">&quot;id&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=\"k\">for</span> exp <span class=\"ow\">in</span> experiments_per_day<span class=\"p\">:</span>\n<span class=\"gp\">... </span>    <span class=\"nb\">print</span><span class=\"p\">(</span>exp<span class=\"p\">[</span><span class=\"s2\">&quot;start_day&quot;</span><span class=\"p\">],</span> exp<span class=\"p\">[</span><span class=\"s2\">&quot;experiments&quot;</span><span class=\"p\">])</span>\n<span class=\"gp\">...</span>\n<span class=\"go\">2015-06-15 00:00:00 2</span>\n<span class=\"go\">2015-12-25 00:00:00 1</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>experiments <span class=\"o\">=</span> Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    start_day<span class=\"o\">=</span>Trunc<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;day&quot;</span><span class=\"p\">,</span> output_field<span class=\"o\">=</span>DateTimeField<span class=\"p\">())</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>filter<span class=\"p\">(</span>start_day<span class=\"o\">=</span>datetime<span class=\"p\">(</span><span class=\"mi\">2015</span><span class=\"p\">,</span> <span class=\"mi\">6</span><span class=\"p\">,</span> <span class=\"mi\">15</span><span class=\"p\">))</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">for</span> exp <span class=\"ow\">in</span> experiments<span class=\"p\">:</span>\n<span class=\"gp\">... </span>    <span class=\"nb\">print</span><span class=\"p\">(</span>exp<span class=\"o\">.</span>start_datetime<span class=\"p\">)</span>\n<span class=\"gp\">...</span>\n<span class=\"go\">2015-06-15 14:30:50.000321</span>\n<span class=\"go\">2015-06-15 14:40:02.000123</span>\n</code></pre></div>\n<aside class=\"admonition-trunc-produces-naive-datetimes admonition\" role=\"note\">\n<p class=\"admonition-title\"><code class=\"docutils literal notranslate\">Trunc()</code> produces naive datetimes</p>\n<p>When <a class=\"reference internal\" href=\"/id/6.1/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\">USE_TZ</code></a> is <code class=\"docutils literal notranslate\">True</code>, Django saves values in <code class=\"docutils literal notranslate\">UTC</code> (or the\nconnection's configured timezone). Since <code class=\"docutils literal notranslate\">tzinfo</code> defaults to\n<a class=\"reference internal\" href=\"/id/6.1/ref/settings/#std-setting-TIME_ZONE\"><code class=\"xref std std-setting docutils literal notranslate\">TIME_ZONE</code></a> when not provided, you may need to provide an explicit\n<code class=\"docutils literal notranslate\">tzinfo</code> to compare truncated values. The following example demonstrates\nwhat happens when &quot;Europe/Berlin&quot; is active and how to adjust for this:</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.utils</span> <span class=\"kn\">import</span> timezone\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">datetime</span> <span class=\"kn\">import</span> UTC<span class=\"p\">,</span> datetime\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> TruncSecond\n<span class=\"gp\">&gt;&gt;&gt; </span>start <span class=\"o\">=</span> datetime<span class=\"p\">(</span><span class=\"mi\">2015</span><span class=\"p\">,</span> <span class=\"mi\">6</span><span class=\"p\">,</span> <span class=\"mi\">15</span><span class=\"p\">,</span> <span class=\"mi\">14</span><span class=\"p\">,</span> <span class=\"mi\">30</span><span class=\"p\">,</span> <span class=\"mi\">50</span><span class=\"p\">,</span> <span class=\"mi\">321</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>start <span class=\"o\">=</span> timezone<span class=\"o\">.</span>make_aware<span class=\"p\">(</span>start<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>exp <span class=\"o\">=</span> Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>start_datetime<span class=\"o\">=</span>start<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>find_this_exp <span class=\"o\">=</span> Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    trunc_start<span class=\"o\">=</span>TruncSecond<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>filter<span class=\"p\">(</span>trunc_start__lte<span class=\"o\">=</span>start<span class=\"p\">)</span>\n<span class=\"go\"># Comparing local time to UTC finds no results.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>find_this_exp<span class=\"o\">.</span>count<span class=\"p\">()</span>\n<span class=\"go\">0</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>find_this_exp_adjusted <span class=\"o\">=</span> Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    trunc_start<span class=\"o\">=</span>TruncSecond<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">,</span> tzinfo<span class=\"o\">=</span>UTC<span class=\"p\">)</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>filter<span class=\"p\">(</span>trunc_start__lte<span class=\"o\">=</span>start<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>find_this_exp_adjusted<span class=\"o\">.</span>count<span class=\"p\">()</span>\n<span class=\"go\">1</span>\n</code></pre></div>\n</aside>\n<section id=\"datefield-truncation\">\n<h4>Pemotongan <code class=\"docutils literal notranslate\">DateField</code><a class=\"heading-anchor\" href=\"#datefield-truncation\"><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.functions.TruncYear\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">TruncYear</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">output_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.TruncYear\"><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\">\n<span class=\"sig-name descname\">kind = 'year'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.TruncMonth\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">TruncMonth</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">output_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.TruncMonth\"><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\">\n<span class=\"sig-name descname\">kind = 'month'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.TruncWeek\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">TruncWeek</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">output_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.TruncWeek\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Memotong ke tengah malam pada Senin dari minggu.</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\">\n<span class=\"sig-name descname\">kind = 'week'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.TruncQuarter\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">TruncQuarter</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">output_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.TruncQuarter\"><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\">\n<span class=\"sig-name descname\">kind = 'quarter'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<p>These are logically equivalent to <code class=\"docutils literal notranslate\">Trunc('date_field', kind)</code>. They truncate\nall parts of the date up to <code class=\"docutils literal notranslate\">kind</code> which allows grouping or filtering dates\nwith less precision. <code class=\"docutils literal notranslate\">expression</code> can have an <code class=\"docutils literal notranslate\">output_field</code> of either\n<code class=\"docutils literal notranslate\">DateField</code> or <code class=\"docutils literal notranslate\">DateTimeField</code>.</p>\n<p>Since <code class=\"docutils literal notranslate\">DateField</code>s don't have a time component, only <code class=\"docutils literal notranslate\">Trunc</code> subclasses\nthat deal with date-parts can be used with <code class=\"docutils literal notranslate\">DateField</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=\"kn\">from</span> <span class=\"nn\">datetime</span> <span class=\"kn\">import</span> UTC<span class=\"p\">,</span> datetime\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> Count\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> TruncMonth<span class=\"p\">,</span> TruncYear\n<span class=\"gp\">&gt;&gt;&gt; </span>start1 <span class=\"o\">=</span> datetime<span class=\"p\">(</span><span class=\"mi\">2014</span><span class=\"p\">,</span> <span class=\"mi\">6</span><span class=\"p\">,</span> <span class=\"mi\">15</span><span class=\"p\">,</span> <span class=\"mi\">14</span><span class=\"p\">,</span> <span class=\"mi\">30</span><span class=\"p\">,</span> <span class=\"mi\">50</span><span class=\"p\">,</span> <span class=\"mi\">321</span><span class=\"p\">,</span> tzinfo<span class=\"o\">=</span>UTC<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>start2 <span class=\"o\">=</span> datetime<span class=\"p\">(</span><span class=\"mi\">2015</span><span class=\"p\">,</span> <span class=\"mi\">6</span><span class=\"p\">,</span> <span class=\"mi\">15</span><span class=\"p\">,</span> <span class=\"mi\">14</span><span class=\"p\">,</span> <span class=\"mi\">40</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">,</span> <span class=\"mi\">123</span><span class=\"p\">,</span> tzinfo<span class=\"o\">=</span>UTC<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>start3 <span class=\"o\">=</span> datetime<span class=\"p\">(</span><span class=\"mi\">2015</span><span class=\"p\">,</span> <span class=\"mi\">12</span><span class=\"p\">,</span> <span class=\"mi\">31</span><span class=\"p\">,</span> <span class=\"mi\">17</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">27</span><span class=\"p\">,</span> <span class=\"mi\">999</span><span class=\"p\">,</span> tzinfo<span class=\"o\">=</span>UTC<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>start_datetime<span class=\"o\">=</span>start1<span class=\"p\">,</span> start_date<span class=\"o\">=</span>start1<span class=\"o\">.</span>date<span class=\"p\">())</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>start_datetime<span class=\"o\">=</span>start2<span class=\"p\">,</span> start_date<span class=\"o\">=</span>start2<span class=\"o\">.</span>date<span class=\"p\">())</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>start_datetime<span class=\"o\">=</span>start3<span class=\"p\">,</span> start_date<span class=\"o\">=</span>start3<span class=\"o\">.</span>date<span class=\"p\">())</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>experiments_per_year <span class=\"o\">=</span> <span class=\"p\">(</span>\n<span class=\"gp\">... </span>    Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>year<span class=\"o\">=</span>TruncYear<span class=\"p\">(</span><span class=\"s2\">&quot;start_date&quot;</span><span class=\"p\">))</span>\n<span class=\"gp\">... </span>    <span class=\"o\">.</span>values<span class=\"p\">(</span><span class=\"s2\">&quot;year&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    <span class=\"o\">.</span>annotate<span class=\"p\">(</span>experiments<span class=\"o\">=</span>Count<span class=\"p\">(</span><span class=\"s2\">&quot;id&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=\"k\">for</span> exp <span class=\"ow\">in</span> experiments_per_year<span class=\"p\">:</span>\n<span class=\"gp\">... </span>    <span class=\"nb\">print</span><span class=\"p\">(</span>exp<span class=\"p\">[</span><span class=\"s2\">&quot;year&quot;</span><span class=\"p\">],</span> exp<span class=\"p\">[</span><span class=\"s2\">&quot;experiments&quot;</span><span class=\"p\">])</span>\n<span class=\"gp\">...</span>\n<span class=\"go\">2014-01-01 1</span>\n<span class=\"go\">2015-01-01 2</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">import</span> <span class=\"nn\">zoneinfo</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>melb <span class=\"o\">=</span> zoneinfo<span class=\"o\">.</span>ZoneInfo<span class=\"p\">(</span><span class=\"s2\">&quot;Australia/Melbourne&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>experiments_per_month <span class=\"o\">=</span> <span class=\"p\">(</span>\n<span class=\"gp\">... </span>    Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>month<span class=\"o\">=</span>TruncMonth<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">,</span> tzinfo<span class=\"o\">=</span>melb<span class=\"p\">))</span>\n<span class=\"gp\">... </span>    <span class=\"o\">.</span>values<span class=\"p\">(</span><span class=\"s2\">&quot;month&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    <span class=\"o\">.</span>annotate<span class=\"p\">(</span>experiments<span class=\"o\">=</span>Count<span class=\"p\">(</span><span class=\"s2\">&quot;id&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=\"k\">for</span> exp <span class=\"ow\">in</span> experiments_per_month<span class=\"p\">:</span>\n<span class=\"gp\">... </span>    <span class=\"nb\">print</span><span class=\"p\">(</span>exp<span class=\"p\">[</span><span class=\"s2\">&quot;month&quot;</span><span class=\"p\">],</span> exp<span class=\"p\">[</span><span class=\"s2\">&quot;experiments&quot;</span><span class=\"p\">])</span>\n<span class=\"gp\">...</span>\n<span class=\"go\">2015-06-01 00:00:00+10:00 1</span>\n<span class=\"go\">2016-01-01 00:00:00+11:00 1</span>\n<span class=\"go\">2014-06-01 00:00:00+10:00 1</span>\n</code></pre></div>\n</section>\n<section id=\"datetimefield-truncation\">\n<h4>Pemotongan <code class=\"docutils literal notranslate\">DateTimeField</code><a class=\"heading-anchor\" href=\"#datetimefield-truncation\"><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.functions.TruncDate\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">TruncDate</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.TruncDate\"><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\">\n<span class=\"sig-name descname\">lookup_name = 'date'</span></dt>\n<dd></dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\">\n<span class=\"sig-name descname\">output_field = DateField()</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<p><code class=\"docutils literal notranslate\">TruncDate</code> casts <code class=\"docutils literal notranslate\">expression</code> to a date rather than using the built-in SQL\ntruncate function. It's also registered as a transform on  <code class=\"docutils literal notranslate\">DateTimeField</code> as\n<code class=\"docutils literal notranslate\">__date</code>.</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.TruncTime\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">TruncTime</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.TruncTime\"><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\">\n<span class=\"sig-name descname\">lookup_name = 'time'</span></dt>\n<dd></dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\">\n<span class=\"sig-name descname\">output_field = TimeField()</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<p><code class=\"docutils literal notranslate\">TruncTime</code> casts <code class=\"docutils literal notranslate\">expression</code> to a time rather than using the built-in SQL\ntruncate function. It's also registered as a transform on <code class=\"docutils literal notranslate\">DateTimeField</code> as\n<code class=\"docutils literal notranslate\">__time</code>.</p>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.TruncDay\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">TruncDay</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">output_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.TruncDay\"><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\">\n<span class=\"sig-name descname\">kind = 'day'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.TruncHour\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">TruncHour</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">output_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.TruncHour\"><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\">\n<span class=\"sig-name descname\">kind = 'hour'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.TruncMinute\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">TruncMinute</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">output_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.TruncMinute\"><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\">\n<span class=\"sig-name descname\">kind = 'minute'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.TruncSecond\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">TruncSecond</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">output_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.TruncSecond\"><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\">\n<span class=\"sig-name descname\">kind = 'second'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<p>These are logically equivalent to <code class=\"docutils literal notranslate\">Trunc('datetime_field', kind)</code>. They\ntruncate all parts of the date up to <code class=\"docutils literal notranslate\">kind</code> and allow grouping or filtering\ndatetimes with less precision. <code class=\"docutils literal notranslate\">expression</code> must have an <code class=\"docutils literal notranslate\">output_field</code> of\n<code class=\"docutils literal notranslate\">DateTimeField</code>.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">datetime</span> <span class=\"kn\">import</span> UTC<span class=\"p\">,</span> date<span class=\"p\">,</span> datetime\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> Count\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> <span class=\"p\">(</span>\n<span class=\"gp\">... </span>    TruncDate<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    TruncDay<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    TruncHour<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    TruncMinute<span class=\"p\">,</span>\n<span class=\"gp\">... </span>    TruncSecond<span class=\"p\">,</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">import</span> <span class=\"nn\">zoneinfo</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>start1 <span class=\"o\">=</span> datetime<span class=\"p\">(</span><span class=\"mi\">2014</span><span class=\"p\">,</span> <span class=\"mi\">6</span><span class=\"p\">,</span> <span class=\"mi\">15</span><span class=\"p\">,</span> <span class=\"mi\">14</span><span class=\"p\">,</span> <span class=\"mi\">30</span><span class=\"p\">,</span> <span class=\"mi\">50</span><span class=\"p\">,</span> <span class=\"mi\">321</span><span class=\"p\">,</span> tzinfo<span class=\"o\">=</span>UTC<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>start_datetime<span class=\"o\">=</span>start1<span class=\"p\">,</span> start_date<span class=\"o\">=</span>start1<span class=\"o\">.</span>date<span class=\"p\">())</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>melb <span class=\"o\">=</span> zoneinfo<span class=\"o\">.</span>ZoneInfo<span class=\"p\">(</span><span class=\"s2\">&quot;Australia/Melbourne&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    date<span class=\"o\">=</span>TruncDate<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    day<span class=\"o\">=</span>TruncDay<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">,</span> tzinfo<span class=\"o\">=</span>melb<span class=\"p\">),</span>\n<span class=\"gp\">... </span>    hour<span class=\"o\">=</span>TruncHour<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">,</span> tzinfo<span class=\"o\">=</span>melb<span class=\"p\">),</span>\n<span class=\"gp\">... </span>    minute<span class=\"o\">=</span>TruncMinute<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>    second<span class=\"o\">=</span>TruncSecond<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>values<span class=\"p\">(</span><span class=\"s2\">&quot;date&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;day&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;hour&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;minute&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;second&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"go\">{&#39;date&#39;: datetime.date(2014, 6, 15),</span>\n<span class=\"go\"> &#39;day&#39;: datetime.datetime(2014, 6, 16, 0, 0, tzinfo=zoneinfo.ZoneInfo(&#39;Australia/Melbourne&#39;)),</span>\n<span class=\"go\"> &#39;hour&#39;: datetime.datetime(2014, 6, 16, 0, 0, tzinfo=zoneinfo.ZoneInfo(&#39;Australia/Melbourne&#39;)),</span>\n<span class=\"go\"> &#39;minute&#39;: &#39;minute&#39;: datetime.datetime(2014, 6, 15, 14, 30, tzinfo=UTC),</span>\n<span class=\"go\"> &#39;second&#39;: datetime.datetime(2014, 6, 15, 14, 30, 50, tzinfo=UTC)</span>\n<span class=\"go\">}</span>\n</code></pre></div>\n</section>\n<section id=\"timefield-truncation\">\n<h4>Pemotongan <code class=\"docutils literal notranslate\">TimeField</code><a class=\"heading-anchor\" href=\"#timefield-truncation\"><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\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">TruncHour</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">output_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span></dt>\n<dd><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\">\n<span class=\"sig-name descname\">kind = 'hour'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">TruncMinute</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">output_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span></dt>\n<dd><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\">\n<span class=\"sig-name descname\">kind = 'minute'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">TruncSecond</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">output_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">tzinfo<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span></dt>\n<dd><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\">\n<span class=\"sig-name descname\">kind = 'second'</span></dt>\n<dd></dd></dl>\n\n</dd></dl>\n\n<p>These are logically equivalent to <code class=\"docutils literal notranslate\">Trunc('time_field', kind)</code>. They truncate\nall parts of the time up to <code class=\"docutils literal notranslate\">kind</code> which allows grouping or filtering times\nwith less precision. <code class=\"docutils literal notranslate\">expression</code> can have an <code class=\"docutils literal notranslate\">output_field</code> of either\n<code class=\"docutils literal notranslate\">TimeField</code> or <code class=\"docutils literal notranslate\">DateTimeField</code>.</p>\n<p>Since <code class=\"docutils literal notranslate\">TimeField</code>s don't have a date component, only <code class=\"docutils literal notranslate\">Trunc</code> subclasses\nthat deal with time-parts can be used with <code class=\"docutils literal notranslate\">TimeField</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=\"kn\">from</span> <span class=\"nn\">datetime</span> <span class=\"kn\">import</span> UTC<span class=\"p\">,</span> datetime\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> Count<span class=\"p\">,</span> TimeField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> TruncHour\n<span class=\"gp\">&gt;&gt;&gt; </span>start1 <span class=\"o\">=</span> datetime<span class=\"p\">(</span><span class=\"mi\">2014</span><span class=\"p\">,</span> <span class=\"mi\">6</span><span class=\"p\">,</span> <span class=\"mi\">15</span><span class=\"p\">,</span> <span class=\"mi\">14</span><span class=\"p\">,</span> <span class=\"mi\">30</span><span class=\"p\">,</span> <span class=\"mi\">50</span><span class=\"p\">,</span> <span class=\"mi\">321</span><span class=\"p\">,</span> tzinfo<span class=\"o\">=</span>UTC<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>start2 <span class=\"o\">=</span> datetime<span class=\"p\">(</span><span class=\"mi\">2014</span><span class=\"p\">,</span> <span class=\"mi\">6</span><span class=\"p\">,</span> <span class=\"mi\">15</span><span class=\"p\">,</span> <span class=\"mi\">14</span><span class=\"p\">,</span> <span class=\"mi\">40</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">,</span> <span class=\"mi\">123</span><span class=\"p\">,</span> tzinfo<span class=\"o\">=</span>UTC<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>start3 <span class=\"o\">=</span> datetime<span class=\"p\">(</span><span class=\"mi\">2015</span><span class=\"p\">,</span> <span class=\"mi\">12</span><span class=\"p\">,</span> <span class=\"mi\">31</span><span class=\"p\">,</span> <span class=\"mi\">17</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">27</span><span class=\"p\">,</span> <span class=\"mi\">999</span><span class=\"p\">,</span> tzinfo<span class=\"o\">=</span>UTC<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>start_datetime<span class=\"o\">=</span>start1<span class=\"p\">,</span> start_time<span class=\"o\">=</span>start1<span class=\"o\">.</span>time<span class=\"p\">())</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>start_datetime<span class=\"o\">=</span>start2<span class=\"p\">,</span> start_time<span class=\"o\">=</span>start2<span class=\"o\">.</span>time<span class=\"p\">())</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>start_datetime<span class=\"o\">=</span>start3<span class=\"p\">,</span> start_time<span class=\"o\">=</span>start3<span class=\"o\">.</span>time<span class=\"p\">())</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>experiments_per_hour <span class=\"o\">=</span> <span class=\"p\">(</span>\n<span class=\"gp\">... </span>    Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>        hour<span class=\"o\">=</span>TruncHour<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">,</span> output_field<span class=\"o\">=</span>TimeField<span class=\"p\">()),</span>\n<span class=\"gp\">... </span>    <span class=\"p\">)</span>\n<span class=\"gp\">... </span>    <span class=\"o\">.</span>values<span class=\"p\">(</span><span class=\"s2\">&quot;hour&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    <span class=\"o\">.</span>annotate<span class=\"p\">(</span>experiments<span class=\"o\">=</span>Count<span class=\"p\">(</span><span class=\"s2\">&quot;id&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=\"k\">for</span> exp <span class=\"ow\">in</span> experiments_per_hour<span class=\"p\">:</span>\n<span class=\"gp\">... </span>    <span class=\"nb\">print</span><span class=\"p\">(</span>exp<span class=\"p\">[</span><span class=\"s2\">&quot;hour&quot;</span><span class=\"p\">],</span> exp<span class=\"p\">[</span><span class=\"s2\">&quot;experiments&quot;</span><span class=\"p\">])</span>\n<span class=\"gp\">...</span>\n<span class=\"go\">14:00:00 2</span>\n<span class=\"go\">17:00:00 1</span>\n\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">import</span> <span class=\"nn\">zoneinfo</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>melb <span class=\"o\">=</span> zoneinfo<span class=\"o\">.</span>ZoneInfo<span class=\"p\">(</span><span class=\"s2\">&quot;Australia/Melbourne&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>experiments_per_hour <span class=\"o\">=</span> <span class=\"p\">(</span>\n<span class=\"gp\">... </span>    Experiment<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>        hour<span class=\"o\">=</span>TruncHour<span class=\"p\">(</span><span class=\"s2\">&quot;start_datetime&quot;</span><span class=\"p\">,</span> tzinfo<span class=\"o\">=</span>melb<span class=\"p\">),</span>\n<span class=\"gp\">... </span>    <span class=\"p\">)</span>\n<span class=\"gp\">... </span>    <span class=\"o\">.</span>values<span class=\"p\">(</span><span class=\"s2\">&quot;hour&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span>    <span class=\"o\">.</span>annotate<span class=\"p\">(</span>experiments<span class=\"o\">=</span>Count<span class=\"p\">(</span><span class=\"s2\">&quot;id&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=\"k\">for</span> exp <span class=\"ow\">in</span> experiments_per_hour<span class=\"p\">:</span>\n<span class=\"gp\">... </span>    <span class=\"nb\">print</span><span class=\"p\">(</span>exp<span class=\"p\">[</span><span class=\"s2\">&quot;hour&quot;</span><span class=\"p\">],</span> exp<span class=\"p\">[</span><span class=\"s2\">&quot;experiments&quot;</span><span class=\"p\">])</span>\n<span class=\"gp\">...</span>\n<span class=\"go\">2014-06-16 00:00:00+10:00 2</span>\n<span class=\"go\">2016-01-01 04:00:00+11:00 1</span>\n</code></pre></div>\n</section>\n</section>\n</section>\n<section id=\"json-functions\">\n<span id=\"id2\"></span><h2>JSON Functions<a class=\"heading-anchor\" href=\"#json-functions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"jsonarray\">\n<h3><code class=\"docutils literal notranslate\">JSONArray</code><a class=\"heading-anchor\" href=\"#jsonarray\"><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.functions.JSONArray\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">JSONArray</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>expressions</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.JSONArray\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a list of field names or expressions and returns a JSON array\ncontaining those values.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> F\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> JSONArray<span class=\"p\">,</span> Lower\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Smith&quot;</span><span class=\"p\">,</span> alias<span class=\"o\">=</span><span class=\"s2\">&quot;msmith&quot;</span><span class=\"p\">,</span> age<span class=\"o\">=</span><span class=\"mi\">25</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    json_array<span class=\"o\">=</span>JSONArray<span class=\"p\">(</span>\n<span class=\"gp\">... </span>        Lower<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>        <span class=\"s2\">&quot;alias&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>        F<span class=\"p\">(</span><span class=\"s2\">&quot;age&quot;</span><span class=\"p\">)</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><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author<span class=\"o\">.</span>json_array\n<span class=\"go\">[&#39;margaret smith&#39;, &#39;msmith&#39;, 50]</span>\n</code></pre></div>\n</section>\n<section id=\"jsonobject\">\n<h3><code class=\"docutils literal notranslate\">JSONObject</code><a class=\"heading-anchor\" href=\"#jsonobject\"><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.functions.JSONObject\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">JSONObject</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>fields</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.JSONObject\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Takes a list of key-value pairs and returns a JSON object containing those\npairs.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> F\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> JSONObject<span class=\"p\">,</span> Lower\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Smith&quot;</span><span class=\"p\">,</span> alias<span class=\"o\">=</span><span class=\"s2\">&quot;msmith&quot;</span><span class=\"p\">,</span> age<span class=\"o\">=</span><span class=\"mi\">25</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    json_object<span class=\"o\">=</span>JSONObject<span class=\"p\">(</span>\n<span class=\"gp\">... </span>        name<span class=\"o\">=</span>Lower<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">),</span>\n<span class=\"gp\">... </span>        alias<span class=\"o\">=</span><span class=\"s2\">&quot;alias&quot;</span><span class=\"p\">,</span>\n<span class=\"gp\">... </span>        age<span class=\"o\">=</span>F<span class=\"p\">(</span><span class=\"s2\">&quot;age&quot;</span><span class=\"p\">)</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><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author<span class=\"o\">.</span>json_object\n<span class=\"go\">{&#39;name&#39;: &#39;margaret smith&#39;, &#39;alias&#39;: &#39;msmith&#39;, &#39;age&#39;: 50}</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"math-functions\">\n<span id=\"id3\"></span><h2>Fungsi-fungsi Matematika<a class=\"heading-anchor\" href=\"#math-functions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Kami akan menggunakan model berikut dalam contoh-contoh fungsi matematika:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span> <span class=\"nc\">Vector</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    x <span class=\"o\">=</span> models<span class=\"o\">.</span>FloatField<span class=\"p\">()</span>\n    y <span class=\"o\">=</span> models<span class=\"o\">.</span>FloatField<span class=\"p\">()</span>\n</code></pre></div>\n<section id=\"abs\">\n<h3><code class=\"docutils literal notranslate\">Abs</code><a class=\"heading-anchor\" href=\"#abs\"><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.functions.Abs\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Abs</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Abs\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns the absolute value of a numeric field or expression.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Abs\n<span class=\"gp\">&gt;&gt;&gt; </span>Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>x<span class=\"o\">=-</span><span class=\"mf\">0.5</span><span class=\"p\">,</span> y<span class=\"o\">=</span><span class=\"mf\">1.1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>x_abs<span class=\"o\">=</span>Abs<span class=\"p\">(</span><span class=\"s2\">&quot;x&quot;</span><span class=\"p\">),</span> y_abs<span class=\"o\">=</span>Abs<span class=\"p\">(</span><span class=\"s2\">&quot;y&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector<span class=\"o\">.</span>x_abs<span class=\"p\">,</span> vector<span class=\"o\">.</span>y_abs\n<span class=\"go\">(0.5, 1.1)</span>\n</code></pre></div>\n<p>It can also be registered as a transform. 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> FloatField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Abs\n<span class=\"gp\">&gt;&gt;&gt; </span>FloatField<span class=\"o\">.</span>register_lookup<span class=\"p\">(</span>Abs<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get vectors inside the unit cube</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vectors <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>x__abs__lt<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">,</span> y__abs__lt<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"acos\">\n<h3><code class=\"docutils literal notranslate\">ACos</code><a class=\"heading-anchor\" href=\"#acos\"><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.functions.ACos\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ACos</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.ACos\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns the arccosine of a numeric field or expression. The expression value\nmust be within the range -1 to 1.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> ACos\n<span class=\"gp\">&gt;&gt;&gt; </span>Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mf\">0.5</span><span class=\"p\">,</span> y<span class=\"o\">=-</span><span class=\"mf\">0.9</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>x_acos<span class=\"o\">=</span>ACos<span class=\"p\">(</span><span class=\"s2\">&quot;x&quot;</span><span class=\"p\">),</span> y_acos<span class=\"o\">=</span>ACos<span class=\"p\">(</span><span class=\"s2\">&quot;y&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector<span class=\"o\">.</span>x_acos<span class=\"p\">,</span> vector<span class=\"o\">.</span>y_acos\n<span class=\"go\">(1.0471975511965979, 2.6905658417935308)</span>\n</code></pre></div>\n<p>It can also be registered as a transform. 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> FloatField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> ACos\n<span class=\"gp\">&gt;&gt;&gt; </span>FloatField<span class=\"o\">.</span>register_lookup<span class=\"p\">(</span>ACos<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get vectors whose arccosine is less than 1</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vectors <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>x__acos__lt<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">,</span> y__acos__lt<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"asin\">\n<h3><code class=\"docutils literal notranslate\">ASin</code><a class=\"heading-anchor\" href=\"#asin\"><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.functions.ASin\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ASin</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.ASin\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns the arcsine of a numeric field or expression. The expression value must\nbe in the range -1 to 1.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> ASin\n<span class=\"gp\">&gt;&gt;&gt; </span>Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">,</span> y<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>x_asin<span class=\"o\">=</span>ASin<span class=\"p\">(</span><span class=\"s2\">&quot;x&quot;</span><span class=\"p\">),</span> y_asin<span class=\"o\">=</span>ASin<span class=\"p\">(</span><span class=\"s2\">&quot;y&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector<span class=\"o\">.</span>x_asin<span class=\"p\">,</span> vector<span class=\"o\">.</span>y_asin\n<span class=\"go\">(0.0, 1.5707963267948966)</span>\n</code></pre></div>\n<p>It can also be registered as a transform. 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> FloatField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> ASin\n<span class=\"gp\">&gt;&gt;&gt; </span>FloatField<span class=\"o\">.</span>register_lookup<span class=\"p\">(</span>ASin<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get vectors whose arcsine is less than 1</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vectors <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>x__asin__lt<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">,</span> y__asin__lt<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"atan\">\n<h3><code class=\"docutils literal notranslate\">ATan</code><a class=\"heading-anchor\" href=\"#atan\"><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.functions.ATan\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ATan</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.ATan\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Mengembalikan arctangen dari bidang atau ekspresi numerik.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> ATan\n<span class=\"gp\">&gt;&gt;&gt; </span>Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mf\">3.12</span><span class=\"p\">,</span> y<span class=\"o\">=</span><span class=\"mf\">6.987</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>x_atan<span class=\"o\">=</span>ATan<span class=\"p\">(</span><span class=\"s2\">&quot;x&quot;</span><span class=\"p\">),</span> y_atan<span class=\"o\">=</span>ATan<span class=\"p\">(</span><span class=\"s2\">&quot;y&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector<span class=\"o\">.</span>x_atan<span class=\"p\">,</span> vector<span class=\"o\">.</span>y_atan\n<span class=\"go\">(1.2606282660069106, 1.428638798133829)</span>\n</code></pre></div>\n<p>It can also be registered as a transform. 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> FloatField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> ATan\n<span class=\"gp\">&gt;&gt;&gt; </span>FloatField<span class=\"o\">.</span>register_lookup<span class=\"p\">(</span>ATan<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get vectors whose arctangent is less than 2</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vectors <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>x__atan__lt<span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">,</span> y__atan__lt<span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"atan2\">\n<h3><code class=\"docutils literal notranslate\">ATan2</code><a class=\"heading-anchor\" href=\"#atan2\"><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.functions.ATan2\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ATan2</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression1</em>, <em class=\"sig-param\">expression2</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.ATan2\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns the arctangent of <code class=\"docutils literal notranslate\">expression1 / expression2</code>.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> ATan2\n<span class=\"gp\">&gt;&gt;&gt; </span>Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mf\">2.5</span><span class=\"p\">,</span> y<span class=\"o\">=</span><span class=\"mf\">1.9</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>atan2<span class=\"o\">=</span>ATan2<span class=\"p\">(</span><span class=\"s2\">&quot;x&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;y&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector<span class=\"o\">.</span>atan2\n<span class=\"go\">0.9209258773829491</span>\n</code></pre></div>\n</section>\n<section id=\"ceil\">\n<h3><code class=\"docutils literal notranslate\">Ceil</code><a class=\"heading-anchor\" href=\"#ceil\"><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.functions.Ceil\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Ceil</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Ceil\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns the smallest integer greater than or equal to a numeric field or\nexpression.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Ceil\n<span class=\"gp\">&gt;&gt;&gt; </span>Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mf\">3.12</span><span class=\"p\">,</span> y<span class=\"o\">=</span><span class=\"mf\">7.0</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>x_ceil<span class=\"o\">=</span>Ceil<span class=\"p\">(</span><span class=\"s2\">&quot;x&quot;</span><span class=\"p\">),</span> y_ceil<span class=\"o\">=</span>Ceil<span class=\"p\">(</span><span class=\"s2\">&quot;y&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector<span class=\"o\">.</span>x_ceil<span class=\"p\">,</span> vector<span class=\"o\">.</span>y_ceil\n<span class=\"go\">(4.0, 7.0)</span>\n</code></pre></div>\n<p>It can also be registered as a transform. 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> FloatField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Ceil\n<span class=\"gp\">&gt;&gt;&gt; </span>FloatField<span class=\"o\">.</span>register_lookup<span class=\"p\">(</span>Ceil<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get vectors whose ceil is less than 10</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vectors <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>x__ceil__lt<span class=\"o\">=</span><span class=\"mi\">10</span><span class=\"p\">,</span> y__ceil__lt<span class=\"o\">=</span><span class=\"mi\">10</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"cos\">\n<h3><code class=\"docutils literal notranslate\">Cos</code><a class=\"heading-anchor\" href=\"#cos\"><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.functions.Cos\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Cos</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Cos\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns the cosine  of a numeric field or expression.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Cos\n<span class=\"gp\">&gt;&gt;&gt; </span>Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>x<span class=\"o\">=-</span><span class=\"mf\">8.0</span><span class=\"p\">,</span> y<span class=\"o\">=</span><span class=\"mf\">3.1415926</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>x_cos<span class=\"o\">=</span>Cos<span class=\"p\">(</span><span class=\"s2\">&quot;x&quot;</span><span class=\"p\">),</span> y_cos<span class=\"o\">=</span>Cos<span class=\"p\">(</span><span class=\"s2\">&quot;y&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector<span class=\"o\">.</span>x_cos<span class=\"p\">,</span> vector<span class=\"o\">.</span>y_cos\n<span class=\"go\">(-0.14550003380861354, -0.9999999999999986)</span>\n</code></pre></div>\n<p>It can also be registered as a transform. 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> FloatField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Cos\n<span class=\"gp\">&gt;&gt;&gt; </span>FloatField<span class=\"o\">.</span>register_lookup<span class=\"p\">(</span>Cos<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get vectors whose cosine is less than 0.5</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vectors <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>x__cos__lt<span class=\"o\">=</span><span class=\"mf\">0.5</span><span class=\"p\">,</span> y__cos__lt<span class=\"o\">=</span><span class=\"mf\">0.5</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"cot\">\n<h3><code class=\"docutils literal notranslate\">Cot</code><a class=\"heading-anchor\" href=\"#cot\"><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.functions.Cot\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Cot</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Cot\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns the cotangent of a numeric field or expression.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Cot\n<span class=\"gp\">&gt;&gt;&gt; </span>Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mf\">12.0</span><span class=\"p\">,</span> y<span class=\"o\">=</span><span class=\"mf\">1.0</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>x_cot<span class=\"o\">=</span>Cot<span class=\"p\">(</span><span class=\"s2\">&quot;x&quot;</span><span class=\"p\">),</span> y_cot<span class=\"o\">=</span>Cot<span class=\"p\">(</span><span class=\"s2\">&quot;y&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector<span class=\"o\">.</span>x_cot<span class=\"p\">,</span> vector<span class=\"o\">.</span>y_cot\n<span class=\"go\">(-1.5726734063976826, 0.642092615934331)</span>\n</code></pre></div>\n<p>It can also be registered as a transform. 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> FloatField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Cot\n<span class=\"gp\">&gt;&gt;&gt; </span>FloatField<span class=\"o\">.</span>register_lookup<span class=\"p\">(</span>Cot<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get vectors whose cotangent is less than 1</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vectors <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>x__cot__lt<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">,</span> y__cot__lt<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"degrees\">\n<h3><code class=\"docutils literal notranslate\">Degrees</code><a class=\"heading-anchor\" href=\"#degrees\"><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.functions.Degrees\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Degrees</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Degrees\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Converts a numeric field or expression from radians to degrees.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Degrees\n<span class=\"gp\">&gt;&gt;&gt; </span>Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>x<span class=\"o\">=-</span><span class=\"mf\">1.57</span><span class=\"p\">,</span> y<span class=\"o\">=</span><span class=\"mf\">3.14</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>x_d<span class=\"o\">=</span>Degrees<span class=\"p\">(</span><span class=\"s2\">&quot;x&quot;</span><span class=\"p\">),</span> y_d<span class=\"o\">=</span>Degrees<span class=\"p\">(</span><span class=\"s2\">&quot;y&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector<span class=\"o\">.</span>x_d<span class=\"p\">,</span> vector<span class=\"o\">.</span>y_d\n<span class=\"go\">(-89.95437383553924, 179.9087476710785)</span>\n</code></pre></div>\n<p>It can also be registered as a transform. 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> FloatField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Degrees\n<span class=\"gp\">&gt;&gt;&gt; </span>FloatField<span class=\"o\">.</span>register_lookup<span class=\"p\">(</span>Degrees<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get vectors whose degrees are less than 360</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vectors <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>x__degrees__lt<span class=\"o\">=</span><span class=\"mi\">360</span><span class=\"p\">,</span> y__degrees__lt<span class=\"o\">=</span><span class=\"mi\">360</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"exp\">\n<h3><code class=\"docutils literal notranslate\">Exp</code><a class=\"heading-anchor\" href=\"#exp\"><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.functions.Exp\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Exp</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Exp\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns the value of <code class=\"docutils literal notranslate\">e</code> (the natural logarithm base) raised to the power of\na numeric field or expression.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Exp\n<span class=\"gp\">&gt;&gt;&gt; </span>Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mf\">5.4</span><span class=\"p\">,</span> y<span class=\"o\">=-</span><span class=\"mf\">2.0</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>x_exp<span class=\"o\">=</span>Exp<span class=\"p\">(</span><span class=\"s2\">&quot;x&quot;</span><span class=\"p\">),</span> y_exp<span class=\"o\">=</span>Exp<span class=\"p\">(</span><span class=\"s2\">&quot;y&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector<span class=\"o\">.</span>x_exp<span class=\"p\">,</span> vector<span class=\"o\">.</span>y_exp\n<span class=\"go\">(221.40641620418717, 0.1353352832366127)</span>\n</code></pre></div>\n<p>It can also be registered as a transform. 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> FloatField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Exp\n<span class=\"gp\">&gt;&gt;&gt; </span>FloatField<span class=\"o\">.</span>register_lookup<span class=\"p\">(</span>Exp<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get vectors whose exp() is greater than 10</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vectors <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>x__exp__gt<span class=\"o\">=</span><span class=\"mi\">10</span><span class=\"p\">,</span> y__exp__gt<span class=\"o\">=</span><span class=\"mi\">10</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"floor\">\n<h3><code class=\"docutils literal notranslate\">Floor</code><a class=\"heading-anchor\" href=\"#floor\"><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.functions.Floor\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Floor</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Floor\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns the largest integer value not greater than a numeric field or\nexpression.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Floor\n<span class=\"gp\">&gt;&gt;&gt; </span>Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mf\">5.4</span><span class=\"p\">,</span> y<span class=\"o\">=-</span><span class=\"mf\">2.3</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>x_floor<span class=\"o\">=</span>Floor<span class=\"p\">(</span><span class=\"s2\">&quot;x&quot;</span><span class=\"p\">),</span> y_floor<span class=\"o\">=</span>Floor<span class=\"p\">(</span><span class=\"s2\">&quot;y&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector<span class=\"o\">.</span>x_floor<span class=\"p\">,</span> vector<span class=\"o\">.</span>y_floor\n<span class=\"go\">(5.0, -3.0)</span>\n</code></pre></div>\n<p>It can also be registered as a transform. 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> FloatField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Floor\n<span class=\"gp\">&gt;&gt;&gt; </span>FloatField<span class=\"o\">.</span>register_lookup<span class=\"p\">(</span>Floor<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get vectors whose floor() is greater than 10</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vectors <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>x__floor__gt<span class=\"o\">=</span><span class=\"mi\">10</span><span class=\"p\">,</span> y__floor__gt<span class=\"o\">=</span><span class=\"mi\">10</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"ln\">\n<h3><code class=\"docutils literal notranslate\">Ln</code><a class=\"heading-anchor\" href=\"#ln\"><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.functions.Ln\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Ln</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Ln\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns the natural logarithm a numeric field or expression.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Ln\n<span class=\"gp\">&gt;&gt;&gt; </span>Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mf\">5.4</span><span class=\"p\">,</span> y<span class=\"o\">=</span><span class=\"mf\">233.0</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>x_ln<span class=\"o\">=</span>Ln<span class=\"p\">(</span><span class=\"s2\">&quot;x&quot;</span><span class=\"p\">),</span> y_ln<span class=\"o\">=</span>Ln<span class=\"p\">(</span><span class=\"s2\">&quot;y&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector<span class=\"o\">.</span>x_ln<span class=\"p\">,</span> vector<span class=\"o\">.</span>y_ln\n<span class=\"go\">(1.6863989535702288, 5.4510384535657)</span>\n</code></pre></div>\n<p>It can also be registered as a transform. 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> FloatField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Ln\n<span class=\"gp\">&gt;&gt;&gt; </span>FloatField<span class=\"o\">.</span>register_lookup<span class=\"p\">(</span>Ln<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get vectors whose value greater than e</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vectors <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>x__ln__gt<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">,</span> y__ln__gt<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"log\">\n<h3><code class=\"docutils literal notranslate\">Log</code><a class=\"heading-anchor\" href=\"#log\"><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.functions.Log\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Log</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression1</em>, <em class=\"sig-param\">expression2</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Log\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts two numeric fields or expressions and returns the logarithm of\nthe second to base of the first.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Log\n<span class=\"gp\">&gt;&gt;&gt; </span>Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mf\">2.0</span><span class=\"p\">,</span> y<span class=\"o\">=</span><span class=\"mf\">4.0</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>log<span class=\"o\">=</span>Log<span class=\"p\">(</span><span class=\"s2\">&quot;x&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;y&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector<span class=\"o\">.</span>log\n<span class=\"go\">2.0</span>\n</code></pre></div>\n</section>\n<section id=\"mod\">\n<h3><code class=\"docutils literal notranslate\">Mod</code><a class=\"heading-anchor\" href=\"#mod\"><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.functions.Mod\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Mod</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression1</em>, <em class=\"sig-param\">expression2</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Mod\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts two numeric fields or expressions and returns the remainder of\nthe first divided by the second (modulo operation).</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Mod\n<span class=\"gp\">&gt;&gt;&gt; </span>Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mf\">5.4</span><span class=\"p\">,</span> y<span class=\"o\">=</span><span class=\"mf\">2.3</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>mod<span class=\"o\">=</span>Mod<span class=\"p\">(</span><span class=\"s2\">&quot;x&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;y&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector<span class=\"o\">.</span>mod\n<span class=\"go\">0.8</span>\n</code></pre></div>\n</section>\n<section id=\"pi\">\n<h3><code class=\"docutils literal notranslate\">Pi</code><a class=\"heading-anchor\" href=\"#pi\"><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.functions.Pi\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Pi</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Pi\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Mengembalikan nilai dari ketetapan matematika <code class=\"docutils literal notranslate\">π</code>.</p>\n</section>\n<section id=\"power\">\n<h3><code class=\"docutils literal notranslate\">Power</code><a class=\"heading-anchor\" href=\"#power\"><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.functions.Power\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Power</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression1</em>, <em class=\"sig-param\">expression2</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Power\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts two numeric fields or expressions and returns the value of the first\nraised to the power of the second.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Power\n<span class=\"gp\">&gt;&gt;&gt; </span>Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">,</span> y<span class=\"o\">=-</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>power<span class=\"o\">=</span>Power<span class=\"p\">(</span><span class=\"s2\">&quot;x&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;y&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector<span class=\"o\">.</span>power\n<span class=\"go\">0.25</span>\n</code></pre></div>\n</section>\n<section id=\"radians\">\n<h3><code class=\"docutils literal notranslate\">Radians</code><a class=\"heading-anchor\" href=\"#radians\"><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.functions.Radians\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Radians</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Radians\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Converts a numeric field or expression from degrees to radians.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Radians\n<span class=\"gp\">&gt;&gt;&gt; </span>Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>x<span class=\"o\">=-</span><span class=\"mi\">90</span><span class=\"p\">,</span> y<span class=\"o\">=</span><span class=\"mi\">180</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>x_r<span class=\"o\">=</span>Radians<span class=\"p\">(</span><span class=\"s2\">&quot;x&quot;</span><span class=\"p\">),</span> y_r<span class=\"o\">=</span>Radians<span class=\"p\">(</span><span class=\"s2\">&quot;y&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector<span class=\"o\">.</span>x_r<span class=\"p\">,</span> vector<span class=\"o\">.</span>y_r\n<span class=\"go\">(-1.5707963267948966, 3.141592653589793)</span>\n</code></pre></div>\n<p>It can also be registered as a transform. 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> FloatField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Radians\n<span class=\"gp\">&gt;&gt;&gt; </span>FloatField<span class=\"o\">.</span>register_lookup<span class=\"p\">(</span>Radians<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get vectors whose radians are less than 1</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vectors <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>x__radians__lt<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">,</span> y__radians__lt<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"random\">\n<h3><code class=\"docutils literal notranslate\">Random</code><a class=\"heading-anchor\" href=\"#random\"><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.functions.Random\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Random</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Random\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns a random value in the range <code class=\"docutils literal notranslate\">0.0 ≤ x &lt; 1.0</code>.</p>\n</section>\n<section id=\"round\">\n<h3><code class=\"docutils literal notranslate\">Round</code><a class=\"heading-anchor\" href=\"#round\"><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.functions.Round\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Round</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">precision<span class=\"o\">=</span><span class=\"default_value\">0</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Round\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Rounds a numeric field or expression to <code class=\"docutils literal notranslate\">precision</code> (must be an integer)\ndecimal places. By default, it rounds to the nearest integer. Whether half\nvalues are rounded up or down depends on the database.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Round\n<span class=\"gp\">&gt;&gt;&gt; </span>Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mf\">5.4</span><span class=\"p\">,</span> y<span class=\"o\">=-</span><span class=\"mf\">2.37</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>x_r<span class=\"o\">=</span>Round<span class=\"p\">(</span><span class=\"s2\">&quot;x&quot;</span><span class=\"p\">),</span> y_r<span class=\"o\">=</span>Round<span class=\"p\">(</span><span class=\"s2\">&quot;y&quot;</span><span class=\"p\">,</span> precision<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector<span class=\"o\">.</span>x_r<span class=\"p\">,</span> vector<span class=\"o\">.</span>y_r\n<span class=\"go\">(5.0, -2.4)</span>\n</code></pre></div>\n<p>It can also be registered as a transform. 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> FloatField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Round\n<span class=\"gp\">&gt;&gt;&gt; </span>FloatField<span class=\"o\">.</span>register_lookup<span class=\"p\">(</span>Round<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get vectors whose round() is less than 20</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vectors <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>x__round__lt<span class=\"o\">=</span><span class=\"mi\">20</span><span class=\"p\">,</span> y__round__lt<span class=\"o\">=</span><span class=\"mi\">20</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"sign\">\n<h3><code class=\"docutils literal notranslate\">Sign</code><a class=\"heading-anchor\" href=\"#sign\"><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.functions.Sign\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Sign</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Sign\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns the sign (-1, 0, 1) of a numeric field or expression.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Sign\n<span class=\"gp\">&gt;&gt;&gt; </span>Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mf\">5.4</span><span class=\"p\">,</span> y<span class=\"o\">=-</span><span class=\"mf\">2.3</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>x_sign<span class=\"o\">=</span>Sign<span class=\"p\">(</span><span class=\"s2\">&quot;x&quot;</span><span class=\"p\">),</span> y_sign<span class=\"o\">=</span>Sign<span class=\"p\">(</span><span class=\"s2\">&quot;y&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector<span class=\"o\">.</span>x_sign<span class=\"p\">,</span> vector<span class=\"o\">.</span>y_sign\n<span class=\"go\">(1, -1)</span>\n</code></pre></div>\n<p>It can also be registered as a transform. 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> FloatField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Sign\n<span class=\"gp\">&gt;&gt;&gt; </span>FloatField<span class=\"o\">.</span>register_lookup<span class=\"p\">(</span>Sign<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get vectors whose signs of components are less than 0.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vectors <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>x__sign__lt<span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">,</span> y__sign__lt<span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"sin\">\n<h3><code class=\"docutils literal notranslate\">Sin</code><a class=\"heading-anchor\" href=\"#sin\"><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.functions.Sin\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Sin</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Sin\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns the sine of a numeric field or expression.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Sin\n<span class=\"gp\">&gt;&gt;&gt; </span>Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mf\">5.4</span><span class=\"p\">,</span> y<span class=\"o\">=-</span><span class=\"mf\">2.3</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>x_sin<span class=\"o\">=</span>Sin<span class=\"p\">(</span><span class=\"s2\">&quot;x&quot;</span><span class=\"p\">),</span> y_sin<span class=\"o\">=</span>Sin<span class=\"p\">(</span><span class=\"s2\">&quot;y&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector<span class=\"o\">.</span>x_sin<span class=\"p\">,</span> vector<span class=\"o\">.</span>y_sin\n<span class=\"go\">(-0.7727644875559871, -0.7457052121767203)</span>\n</code></pre></div>\n<p>It can also be registered as a transform. 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> FloatField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Sin\n<span class=\"gp\">&gt;&gt;&gt; </span>FloatField<span class=\"o\">.</span>register_lookup<span class=\"p\">(</span>Sin<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get vectors whose sin() is less than 0</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vectors <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>x__sin__lt<span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">,</span> y__sin__lt<span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"sqrt\">\n<h3><code class=\"docutils literal notranslate\">Sqrt</code><a class=\"heading-anchor\" href=\"#sqrt\"><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.functions.Sqrt\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Sqrt</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Sqrt\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns the square root of a nonnegative numeric field or expression.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Sqrt\n<span class=\"gp\">&gt;&gt;&gt; </span>Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mf\">4.0</span><span class=\"p\">,</span> y<span class=\"o\">=</span><span class=\"mf\">12.0</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>x_sqrt<span class=\"o\">=</span>Sqrt<span class=\"p\">(</span><span class=\"s2\">&quot;x&quot;</span><span class=\"p\">),</span> y_sqrt<span class=\"o\">=</span>Sqrt<span class=\"p\">(</span><span class=\"s2\">&quot;y&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector<span class=\"o\">.</span>x_sqrt<span class=\"p\">,</span> vector<span class=\"o\">.</span>y_sqrt\n<span class=\"go\">(2.0, 3.46410)</span>\n</code></pre></div>\n<p>It can also be registered as a transform. 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> FloatField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Sqrt\n<span class=\"gp\">&gt;&gt;&gt; </span>FloatField<span class=\"o\">.</span>register_lookup<span class=\"p\">(</span>Sqrt<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get vectors whose sqrt() is less than 5</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vectors <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>x__sqrt__lt<span class=\"o\">=</span><span class=\"mi\">5</span><span class=\"p\">,</span> y__sqrt__lt<span class=\"o\">=</span><span class=\"mi\">5</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"tan\">\n<h3><code class=\"docutils literal notranslate\">Tan</code><a class=\"heading-anchor\" href=\"#tan\"><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.functions.Tan\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Tan</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Tan\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns the tangent of a numeric field or expression.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Tan\n<span class=\"gp\">&gt;&gt;&gt; </span>Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>x<span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">,</span> y<span class=\"o\">=</span><span class=\"mi\">12</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>x_tan<span class=\"o\">=</span>Tan<span class=\"p\">(</span><span class=\"s2\">&quot;x&quot;</span><span class=\"p\">),</span> y_tan<span class=\"o\">=</span>Tan<span class=\"p\">(</span><span class=\"s2\">&quot;y&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vector<span class=\"o\">.</span>x_tan<span class=\"p\">,</span> vector<span class=\"o\">.</span>y_tan\n<span class=\"go\">(0.0, -0.6358599286615808)</span>\n</code></pre></div>\n<p>It can also be registered as a transform. 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> FloatField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Tan\n<span class=\"gp\">&gt;&gt;&gt; </span>FloatField<span class=\"o\">.</span>register_lookup<span class=\"p\">(</span>Tan<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get vectors whose tangent is less than 0</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>vectors <span class=\"o\">=</span> Vector<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>x__tan__lt<span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">,</span> y__tan__lt<span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"text-functions\">\n<span id=\"id4\"></span><h2>Fungsi teks<a class=\"heading-anchor\" href=\"#text-functions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"chr\">\n<h3><code class=\"docutils literal notranslate\">Chr</code><a class=\"heading-anchor\" href=\"#chr\"><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.functions.Chr\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Chr</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Chr\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a numeric field or expression and returns the text representation of\nthe expression as a single character. It works the same as Python's <a class=\"reference external\" href=\"https://docs.python.org/3/library/functions.html#chr\" title=\"(di Python v3.14)\"><code class=\"xref py py-func docutils literal notranslate\">chr()</code></a>\nfunction.</p>\n<p>Like <a class=\"reference internal\" href=\"#django.db.models.functions.Length\" title=\"django.db.models.functions.Length\"><code class=\"xref py py-class docutils literal notranslate\">Length</code></a>, it can be registered as a transform on <code class=\"docutils literal notranslate\">IntegerField</code>.\nThe default lookup name is <code class=\"docutils literal notranslate\">chr</code>.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Chr\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Smith&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>name__startswith<span class=\"o\">=</span>Chr<span class=\"p\">(</span><span class=\"nb\">ord</span><span class=\"p\">(</span><span class=\"s2\">&quot;M&quot;</span><span class=\"p\">)))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>author<span class=\"o\">.</span>name<span class=\"p\">)</span>\n<span class=\"go\">Margaret Smith</span>\n</code></pre></div>\n</section>\n<section id=\"concat\">\n<h3><code class=\"docutils literal notranslate\">Concat</code><a class=\"heading-anchor\" href=\"#concat\"><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.functions.Concat\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Concat</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>expressions</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Concat\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a list of at least two text fields or expressions and returns the\nconcatenated text. Each argument must be of a text or char type. If you want\nto concatenate a <code class=\"docutils literal notranslate\">TextField()</code> with a <code class=\"docutils literal notranslate\">CharField()</code>, then be sure to tell\nDjango that the <code class=\"docutils literal notranslate\">output_field</code> should be a <code class=\"docutils literal notranslate\">TextField()</code>. Specifying an\n<code class=\"docutils literal notranslate\">output_field</code> is also required when concatenating a <code class=\"docutils literal notranslate\">Value</code> as in the\nexample below.</p>\n<p>This function will never have a null result. On backends where a null argument\nresults in the entire expression being null, Django will ensure that each null\npart is converted to an empty string first.</p>\n<p>Usage 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\"># Get the display name as &quot;name (goes_by)&quot;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> CharField<span class=\"p\">,</span> Value <span class=\"k\">as</span> V\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Concat\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Smith&quot;</span><span class=\"p\">,</span> goes_by<span class=\"o\">=</span><span class=\"s2\">&quot;Maggie&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    screen_name<span class=\"o\">=</span>Concat<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> V<span class=\"p\">(</span><span class=\"s2\">&quot; (&quot;</span><span class=\"p\">),</span> <span class=\"s2\">&quot;goes_by&quot;</span><span class=\"p\">,</span> V<span class=\"p\">(</span><span class=\"s2\">&quot;)&quot;</span><span class=\"p\">),</span> output_field<span class=\"o\">=</span>CharField<span class=\"p\">())</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>author<span class=\"o\">.</span>screen_name<span class=\"p\">)</span>\n<span class=\"go\">Margaret Smith (Maggie)</span>\n</code></pre></div>\n</section>\n<section id=\"left\">\n<h3><code class=\"docutils literal notranslate\">Left</code><a class=\"heading-anchor\" href=\"#left\"><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.functions.Left\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Left</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">length</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Left\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Mengembalikan <code class=\"docutils literal notranslate\">length</code> karakter pertama dari bidang teks atau pernyataan yang diberikan.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Left\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Smith&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>first_initial<span class=\"o\">=</span>Left<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=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>author<span class=\"o\">.</span>first_initial<span class=\"p\">)</span>\n<span class=\"go\">M</span>\n</code></pre></div>\n</section>\n<section id=\"length\">\n<h3><code class=\"docutils literal notranslate\">Length</code><a class=\"heading-anchor\" href=\"#length\"><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.functions.Length\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Length</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Length\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a single text field or expression and returns the number of characters\nthe value has. If the expression is null, then the length will also be null.</p>\n<p>Usage 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\"># Get the length of the name and goes_by fields</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Length\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Smith&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    name_length<span class=\"o\">=</span>Length<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">),</span> goes_by_length<span class=\"o\">=</span>Length<span class=\"p\">(</span><span class=\"s2\">&quot;goes_by&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>author<span class=\"o\">.</span>name_length<span class=\"p\">,</span> author<span class=\"o\">.</span>goes_by_length<span class=\"p\">)</span>\n<span class=\"go\">(14, None)</span>\n</code></pre></div>\n<p>It can also be registered as a transform. 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> CharField\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Length\n<span class=\"gp\">&gt;&gt;&gt; </span>CharField<span class=\"o\">.</span>register_lookup<span class=\"p\">(</span>Length<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"c1\"># Get authors whose name is longer than 7 characters</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>authors <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>name__length__gt<span class=\"o\">=</span><span class=\"mi\">7</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"lower\">\n<h3><code class=\"docutils literal notranslate\">Lower</code><a class=\"heading-anchor\" href=\"#lower\"><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.functions.Lower\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Lower</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Lower\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Menerima bidang teks tunggal atau pernyataan dan mengembalikan perwakilan huruf kecil.</p>\n<p>Itu dapat juga didaftarkan sebagai sebuah perubahan seperti digambarkan dalam <a class=\"reference internal\" href=\"#django.db.models.functions.Length\" title=\"django.db.models.functions.Length\"><code class=\"xref py py-class docutils literal notranslate\">Length</code></a>.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Lower\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Smith&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>name_lower<span class=\"o\">=</span>Lower<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>author<span class=\"o\">.</span>name_lower<span class=\"p\">)</span>\n<span class=\"go\">margaret smith</span>\n</code></pre></div>\n</section>\n<section id=\"lpad\">\n<h3><code class=\"docutils literal notranslate\">LPad</code><a class=\"heading-anchor\" href=\"#lpad\"><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.functions.LPad\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">LPad</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">length</em>, <em class=\"sig-param\">fill_text<span class=\"o\">=</span><span class=\"default_value\">Value(' ')</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.LPad\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns the value of the given text field or expression padded on the left side\nwith <code class=\"docutils literal notranslate\">fill_text</code> so that the resulting value is <code class=\"docutils literal notranslate\">length</code> characters long.\nThe default <code class=\"docutils literal notranslate\">fill_text</code> is a space.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> Value\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> LPad\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;John&quot;</span><span class=\"p\">,</span> alias<span class=\"o\">=</span><span class=\"s2\">&quot;j&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>update<span class=\"p\">(</span>name<span class=\"o\">=</span>LPad<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> <span class=\"mi\">8</span><span class=\"p\">,</span> Value<span class=\"p\">(</span><span class=\"s2\">&quot;abc&quot;</span><span class=\"p\">)))</span>\n<span class=\"go\">1</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>alias<span class=\"o\">=</span><span class=\"s2\">&quot;j&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>name<span class=\"p\">)</span>\n<span class=\"go\">abcaJohn</span>\n</code></pre></div>\n</section>\n<section id=\"ltrim\">\n<h3><code class=\"docutils literal notranslate\">LTrim</code><a class=\"heading-anchor\" href=\"#ltrim\"><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.functions.LTrim\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">LTrim</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.LTrim\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Mirip pada <a class=\"reference internal\" href=\"#django.db.models.functions.Trim\" title=\"django.db.models.functions.Trim\"><code class=\"xref py py-class docutils literal notranslate\">Trim</code></a>, tetapi hanya memindahkan spasi awal.</p>\n</section>\n<section id=\"md5\">\n<h3><code class=\"docutils literal notranslate\">MD5</code><a class=\"heading-anchor\" href=\"#md5\"><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.functions.MD5\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">MD5</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.MD5\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a single text field or expression and returns the MD5 hash of the\nstring.</p>\n<p>Itu dapat juga didaftarkan sebagai sebuah perubahan seperti digambarkan dalam <a class=\"reference internal\" href=\"#django.db.models.functions.Length\" title=\"django.db.models.functions.Length\"><code class=\"xref py py-class docutils literal notranslate\">Length</code></a>.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> MD5\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Smith&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>name_md5<span class=\"o\">=</span>MD5<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>author<span class=\"o\">.</span>name_md5<span class=\"p\">)</span>\n<span class=\"go\">749fb689816b2db85f5b169c2055b247</span>\n</code></pre></div>\n</section>\n<section id=\"ord\">\n<h3><code class=\"docutils literal notranslate\">Ord</code><a class=\"heading-anchor\" href=\"#ord\"><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.functions.Ord\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Ord</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Ord\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a single text field or expression and returns the Unicode code point\nvalue for the first character of that expression. It works similar to Python's\n<a class=\"reference external\" href=\"https://docs.python.org/3/library/functions.html#ord\" title=\"(di Python v3.14)\"><code class=\"xref py py-func docutils literal notranslate\">ord()</code></a> function, but an exception isn't raised if the expression is more\nthan one character long.</p>\n<p>It can also be registered as a transform as described in <a class=\"reference internal\" href=\"#django.db.models.functions.Length\" title=\"django.db.models.functions.Length\"><code class=\"xref py py-class docutils literal notranslate\">Length</code></a>.\nThe default lookup name is <code class=\"docutils literal notranslate\">ord</code>.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Ord\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Smith&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>name_code_point<span class=\"o\">=</span>Ord<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>author<span class=\"o\">.</span>name_code_point<span class=\"p\">)</span>\n<span class=\"go\">77</span>\n</code></pre></div>\n</section>\n<section id=\"repeat\">\n<h3><code class=\"docutils literal notranslate\">Repeat</code><a class=\"heading-anchor\" href=\"#repeat\"><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.functions.Repeat\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Repeat</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">number</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Repeat\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Mengembalikan nilai dari bidang teks diberikan atau pernyataan diulang <code class=\"docutils literal notranslate\">number</code> kali.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Repeat\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;John&quot;</span><span class=\"p\">,</span> alias<span class=\"o\">=</span><span class=\"s2\">&quot;j&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>update<span class=\"p\">(</span>name<span class=\"o\">=</span>Repeat<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> <span class=\"mi\">3</span><span class=\"p\">))</span>\n<span class=\"go\">1</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>alias<span class=\"o\">=</span><span class=\"s2\">&quot;j&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>name<span class=\"p\">)</span>\n<span class=\"go\">JohnJohnJohn</span>\n</code></pre></div>\n</section>\n<section id=\"replace\">\n<h3><code class=\"docutils literal notranslate\">Replace</code><a class=\"heading-anchor\" href=\"#replace\"><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.functions.Replace\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Replace</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">text</em>, <em class=\"sig-param\">replacement<span class=\"o\">=</span><span class=\"default_value\">Value('')</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Replace\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Replaces all occurrences of <code class=\"docutils literal notranslate\">text</code> with <code class=\"docutils literal notranslate\">replacement</code> in <code class=\"docutils literal notranslate\">expression</code>.\nThe default replacement text is the empty string. The arguments to the function\nare case-sensitive.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> Value\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Replace\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Johnson&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Smith&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>update<span class=\"p\">(</span>name<span class=\"o\">=</span>Replace<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> Value<span class=\"p\">(</span><span class=\"s2\">&quot;Margaret&quot;</span><span class=\"p\">),</span> Value<span class=\"p\">(</span><span class=\"s2\">&quot;Margareth&quot;</span><span class=\"p\">)))</span>\n<span class=\"go\">2</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>values<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [{&#39;name&#39;: &#39;Margareth Johnson&#39;}, {&#39;name&#39;: &#39;Margareth Smith&#39;}]&gt;</span>\n</code></pre></div>\n</section>\n<section id=\"reverse\">\n<h3><code class=\"docutils literal notranslate\">Reverse</code><a class=\"heading-anchor\" href=\"#reverse\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.Reverse\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Reverse</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Reverse\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a single text field or expression and returns the characters of that\nexpression in reverse order.</p>\n<p>It can also be registered as a transform as described in <a class=\"reference internal\" href=\"#django.db.models.functions.Length\" title=\"django.db.models.functions.Length\"><code class=\"xref py py-class docutils literal notranslate\">Length</code></a>. The\ndefault lookup name is <code class=\"docutils literal notranslate\">reverse</code>.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Reverse\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Smith&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>backward<span class=\"o\">=</span>Reverse<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>author<span class=\"o\">.</span>backward<span class=\"p\">)</span>\n<span class=\"go\">htimS teragraM</span>\n</code></pre></div>\n</section>\n<section id=\"right\">\n<h3><code class=\"docutils literal notranslate\">Right</code><a class=\"heading-anchor\" href=\"#right\"><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.functions.Right\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Right</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">length</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Right\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Mengembalikan <code class=\"docutils literal notranslate\">length</code> karakter terakhir dari bidang teks atau pernyataan yang diberikan.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Right\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Smith&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>last_letter<span class=\"o\">=</span>Right<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=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>author<span class=\"o\">.</span>last_letter<span class=\"p\">)</span>\n<span class=\"go\">h</span>\n</code></pre></div>\n</section>\n<section id=\"rpad\">\n<h3><code class=\"docutils literal notranslate\">RPad</code><a class=\"heading-anchor\" href=\"#rpad\"><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.functions.RPad\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">RPad</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">length</em>, <em class=\"sig-param\">fill_text<span class=\"o\">=</span><span class=\"default_value\">Value(' ')</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.RPad\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Mirip pada <a class=\"reference internal\" href=\"#django.db.models.functions.LPad\" title=\"django.db.models.functions.LPad\"><code class=\"xref py py-class docutils literal notranslate\">LPad</code></a>, tetapi menambahkan pada sisi kanan.</p>\n</section>\n<section id=\"rtrim\">\n<h3><code class=\"docutils literal notranslate\">RTrim</code><a class=\"heading-anchor\" href=\"#rtrim\"><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.functions.RTrim\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">RTrim</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.RTrim\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Mirip pada <a class=\"reference internal\" href=\"#django.db.models.functions.Trim\" title=\"django.db.models.functions.Trim\"><code class=\"xref py py-class docutils literal notranslate\">Trim</code></a>, namum memindahkan hanya spasi tambahan.</p>\n</section>\n<section id=\"sha1-sha224-sha256-sha384-and-sha512\">\n<h3><code class=\"docutils literal notranslate\">SHA1</code>, <code class=\"docutils literal notranslate\">SHA224</code>, <code class=\"docutils literal notranslate\">SHA256</code>, <code class=\"docutils literal notranslate\">SHA384</code>, and <code class=\"docutils literal notranslate\">SHA512</code><a class=\"heading-anchor\" href=\"#sha1-sha224-sha256-sha384-and-sha512\"><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.functions.SHA1\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">SHA1</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.SHA1\"><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 class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.SHA224\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">SHA224</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.SHA224\"><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 class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.SHA256\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">SHA256</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.SHA256\"><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 class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.SHA384\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">SHA384</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.SHA384\"><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 class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.SHA512\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">SHA512</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.SHA512\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a single text field or expression and returns the particular hash of\nthe string.</p>\n<p>They can also be registered as transforms as described in <a class=\"reference internal\" href=\"#django.db.models.functions.Length\" title=\"django.db.models.functions.Length\"><code class=\"xref py py-class docutils literal notranslate\">Length</code></a>.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> SHA1\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Smith&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>name_sha1<span class=\"o\">=</span>SHA1<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>author<span class=\"o\">.</span>name_sha1<span class=\"p\">)</span>\n<span class=\"go\">b87efd8a6c991c390be5a68e8a7945a7851c7e5c</span>\n</code></pre></div>\n<aside class=\"admonition-postgresql admonition\" role=\"note\">\n<p class=\"admonition-title\">PostgreSQL</p>\n<p>The <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/pgcrypto.html\">pgcrypto extension</a> must be installed. You can use the\n<a class=\"reference internal\" href=\"/id/6.1/ref/contrib/postgres/operations/#django.contrib.postgres.operations.CryptoExtension\" title=\"django.contrib.postgres.operations.CryptoExtension\"><code class=\"xref py py-class docutils literal notranslate\">CryptoExtension</code></a> migration\noperation to install it.</p>\n</aside>\n<aside class=\"admonition-oracle admonition\" role=\"note\">\n<p class=\"admonition-title\">Oracle</p>\n<p>Oracle doesn't support the <code class=\"docutils literal notranslate\">SHA224</code> function.</p>\n</aside>\n</section>\n<section id=\"strindex\">\n<h3><code class=\"docutils literal notranslate\">StrIndex</code><a class=\"heading-anchor\" href=\"#strindex\"><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.functions.StrIndex\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">StrIndex</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">substring</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.StrIndex\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns a positive integer corresponding to the 1-indexed position of the first\noccurrence of <code class=\"docutils literal notranslate\">substring</code> inside <code class=\"docutils literal notranslate\">expression</code>, or 0 if <code class=\"docutils literal notranslate\">substring</code> is not\nfound.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> Value <span class=\"k\">as</span> V\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> StrIndex\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Smith&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Smith, Margaret&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Jackson&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Jackson&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    smith_index<span class=\"o\">=</span>StrIndex<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> V<span class=\"p\">(</span><span class=\"s2\">&quot;Smith&quot;</span><span class=\"p\">))</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>get<span class=\"p\">()</span><span class=\"o\">.</span>smith_index\n<span class=\"go\">0</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>authors <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>smith_index<span class=\"o\">=</span>StrIndex<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">,</span> V<span class=\"p\">(</span><span class=\"s2\">&quot;Smith&quot;</span><span class=\"p\">)))</span><span class=\"o\">.</span>filter<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    smith_index__gt<span class=\"o\">=</span><span class=\"mi\">0</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n<span class=\"go\">&lt;QuerySet [&lt;Author: Margaret Smith&gt;, &lt;Author: Smith, Margaret&gt;]&gt;</span>\n</code></pre></div>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Peringatan</p>\n<p>In MySQL, a database table's <a class=\"reference internal\" href=\"/id/6.1/ref/databases/#mysql-collation\"><span class=\"std std-ref\">collation</span></a> determines\nwhether string comparisons (such as the <code class=\"docutils literal notranslate\">expression</code> and <code class=\"docutils literal notranslate\">substring</code> of\nthis function) are case-sensitive. Comparisons are case-insensitive by\ndefault.</p>\n</aside>\n</section>\n<section id=\"substr\">\n<h3><code class=\"docutils literal notranslate\">Substr</code><a class=\"heading-anchor\" href=\"#substr\"><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.functions.Substr\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Substr</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">pos</em>, <em class=\"sig-param\">length<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Substr\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns a substring of length <code class=\"docutils literal notranslate\">length</code> from the field or expression starting\nat position <code class=\"docutils literal notranslate\">pos</code>. The position is 1-indexed, so the position must be greater\nthan 0. If <code class=\"docutils literal notranslate\">length</code> is <code class=\"docutils literal notranslate\">None</code>, then the rest of the string will be\nreturned.</p>\n<p>Usage 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\"># Set the alias to the first 5 characters of the name as lowercase</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Lower<span class=\"p\">,</span> Substr\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Smith&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>update<span class=\"p\">(</span>alias<span class=\"o\">=</span>Lower<span class=\"p\">(</span>Substr<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=\"go\">1</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Smith&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>alias<span class=\"p\">)</span>\n<span class=\"go\">marga</span>\n</code></pre></div>\n</section>\n<section id=\"trim\">\n<h3><code class=\"docutils literal notranslate\">Trim</code><a class=\"heading-anchor\" href=\"#trim\"><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.functions.Trim\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Trim</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Trim\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns the value of the given text field or expression with leading and\ntrailing spaces removed.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Trim\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;  John  &quot;</span><span class=\"p\">,</span> alias<span class=\"o\">=</span><span class=\"s2\">&quot;j&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>update<span class=\"p\">(</span>name<span class=\"o\">=</span>Trim<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">))</span>\n<span class=\"go\">1</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>alias<span class=\"o\">=</span><span class=\"s2\">&quot;j&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>name<span class=\"p\">)</span>\n<span class=\"go\">John</span>\n</code></pre></div>\n</section>\n<section id=\"upper\">\n<h3><code class=\"docutils literal notranslate\">Upper</code><a class=\"heading-anchor\" href=\"#upper\"><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.functions.Upper\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Upper</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Upper\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Accepts a single text field or expression and returns the uppercase\nrepresentation.</p>\n<p>Itu dapat juga didaftarkan sebagai sebuah perubahan seperti digambarkan dalam <a class=\"reference internal\" href=\"#django.db.models.functions.Length\" title=\"django.db.models.functions.Length\"><code class=\"xref py py-class docutils literal notranslate\">Length</code></a>.</p>\n<p>Usage 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=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Upper\n<span class=\"gp\">&gt;&gt;&gt; </span>Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Margaret Smith&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>author <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>name_upper<span class=\"o\">=</span>Upper<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">))</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>author<span class=\"o\">.</span>name_upper<span class=\"p\">)</span>\n<span class=\"go\">MARGARET SMITH</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"uuid-functions\">\n<span id=\"window-functions\"></span><h2>UUID functions<a class=\"heading-anchor\" href=\"#uuid-functions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"uuid4\">\n<h3><code class=\"docutils literal notranslate\">UUID4</code><a class=\"heading-anchor\" href=\"#uuid4\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<aside class=\"version-note version-added\" data-version=\"6.1\" role=\"note\">\n<p class=\"version-note-title\">New in Django 6.1</p></aside>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.UUID4\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">UUID4</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.UUID4\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Generates a <span class=\"target\" id=\"index-0\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc9562.html#section-5.4\"><strong>version 4 UUID</strong></a>, which is random and is\ngenerated using a cryptographically secure method.</p>\n<aside class=\"admonition-availability admonition\" role=\"note\">\n<p class=\"admonition-title\">Availability</p>\n<p>Available on PostgreSQL, SQLite, MariaDB version 11.7 or later, and Oracle\n23ai/26ai (23.9) or later.</p>\n</aside>\n</section>\n<section id=\"uuid7\">\n<h3><code class=\"docutils literal notranslate\">UUID7</code><a class=\"heading-anchor\" href=\"#uuid7\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<aside class=\"version-note version-added\" data-version=\"6.1\" role=\"note\">\n<p class=\"version-note-title\">New in Django 6.1</p></aside>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.functions.UUID7\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">UUID7</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">shift<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.UUID7\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Generates a <span class=\"target\" id=\"index-1\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc9562.html#section-5.7\"><strong>version 7 UUID</strong></a>, which starts with a\ntime-based component.</p>\n<aside class=\"admonition-availability admonition\" role=\"note\">\n<p class=\"admonition-title\">Availability</p>\n<p>Available on PostgreSQL version 18 or later, MariaDB version 11.7 or later,\nand SQLite on Python version 3.14 or later.</p>\n</aside>\n<aside class=\"admonition-shift admonition\" role=\"note\">\n<p class=\"admonition-title\"><code class=\"docutils literal notranslate\">shift</code></p>\n<p>On PostgreSQL, <code class=\"docutils literal notranslate\">UUID7</code> also supports an optional <code class=\"docutils literal notranslate\">shift</code> value, which\ncan be used to offset the timestamp of the generated UUID. This should be a\n<a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.timedelta\" title=\"(di Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">datetime.timedelta</code></a> or an expression with an <code class=\"docutils literal notranslate\">output_field</code> of\n<a class=\"reference internal\" href=\"/id/6.1/ref/models/fields/#django.db.models.DurationField\" title=\"django.db.models.DurationField\"><code class=\"xref py py-class docutils literal notranslate\">DurationField</code></a>. A positive value will shift the\ntimestamp into the future and a negative value into the past.</p>\n</aside>\n</section>\n</section>\n<section id=\"id5\">\n<h2>Fungsi Windows<a class=\"heading-anchor\" href=\"#id5\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>There are a number of functions to use in a\n<a class=\"reference internal\" href=\"/id/6.1/ref/models/expressions/#django.db.models.expressions.Window\" title=\"django.db.models.expressions.Window\"><code class=\"xref py py-class docutils literal notranslate\">Window</code></a> expression for computing the rank\nof elements or the <a class=\"reference internal\" href=\"#django.db.models.functions.Ntile\" title=\"django.db.models.functions.Ntile\"><code class=\"xref py py-class docutils literal notranslate\">Ntile</code></a> of some rows.</p>\n<section id=\"cumedist\">\n<h3><code class=\"docutils literal notranslate\">CumeDist</code><a class=\"heading-anchor\" href=\"#cumedist\"><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.functions.CumeDist\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">CumeDist</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>expressions</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.CumeDist\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Calculates the cumulative distribution of a value within a window or partition.\nThe cumulative distribution is defined as the number of rows preceding or\npeered with the current row divided by the total number of rows in the frame.</p>\n</section>\n<section id=\"denserank\">\n<h3><code class=\"docutils literal notranslate\">DenseRank</code><a class=\"heading-anchor\" href=\"#denserank\"><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.functions.DenseRank\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">DenseRank</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>expressions</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.DenseRank\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Equivalent to <a class=\"reference internal\" href=\"#django.db.models.functions.Rank\" title=\"django.db.models.functions.Rank\"><code class=\"xref py py-class docutils literal notranslate\">Rank</code></a> but does not have gaps.</p>\n</section>\n<section id=\"firstvalue\">\n<h3><code class=\"docutils literal notranslate\">FirstValue</code><a class=\"heading-anchor\" href=\"#firstvalue\"><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.functions.FirstValue\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">FirstValue</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.FirstValue\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Returns the value evaluated at the row that's the first row of the window\nframe, or <code class=\"docutils literal notranslate\">None</code> if no such value exists.</p>\n</section>\n<section id=\"lag\">\n<h3><code class=\"docutils literal notranslate\">Lag</code><a class=\"heading-anchor\" href=\"#lag\"><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.functions.Lag\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Lag</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">offset<span class=\"o\">=</span><span class=\"default_value\">1</span></em>, <em class=\"sig-param\">default<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Lag\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Menghitung nilai offset oleh <code class=\"docutils literal notranslate\">offset</code>, dan jika tidak ada baris yang ada disana, mengembalikan <code class=\"docutils literal notranslate\">default</code>.</p>\n<p><code class=\"docutils literal notranslate\">default</code> must have the same type as the <code class=\"docutils literal notranslate\">expression</code>, however, this is\nonly validated by the database and not in Python.</p>\n<aside class=\"admonition-mariadb-and-default admonition\" role=\"note\">\n<p class=\"admonition-title\">MariaDB dan <code class=\"docutils literal notranslate\">default</code></p>\n<p>MariaDB <a class=\"reference external\" href=\"https://jira.mariadb.org/browse/MDEV-12981\">doesn't support</a> parameter <code class=\"docutils literal notranslate\">default</code>.</p>\n</aside>\n</section>\n<section id=\"lastvalue\">\n<h3><code class=\"docutils literal notranslate\">LastValue</code><a class=\"heading-anchor\" href=\"#lastvalue\"><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.functions.LastValue\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">LastValue</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.LastValue\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Dibandingkan pada <a class=\"reference internal\" href=\"#django.db.models.functions.FirstValue\" title=\"django.db.models.functions.FirstValue\"><code class=\"xref py py-class docutils literal notranslate\">FirstValue</code></a>, itu menghitung nilai terakhir dalam klausa kerangka yang diberikan.</p>\n</section>\n<section id=\"lead\">\n<h3><code class=\"docutils literal notranslate\">Lead</code><a class=\"heading-anchor\" href=\"#lead\"><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.functions.Lead\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Lead</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">offset<span class=\"o\">=</span><span class=\"default_value\">1</span></em>, <em class=\"sig-param\">default<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Lead\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Calculates the leading value in a given <a class=\"reference internal\" href=\"/id/6.1/ref/models/expressions/#window-frames\"><span class=\"std std-ref\">frame</span></a>. Both\n<code class=\"docutils literal notranslate\">offset</code> and <code class=\"docutils literal notranslate\">default</code> are evaluated with respect to the current row.</p>\n<p><code class=\"docutils literal notranslate\">default</code> must have the same type as the <code class=\"docutils literal notranslate\">expression</code>, however, this is\nonly validated by the database and not in Python.</p>\n<aside class=\"admonition-mariadb-and-default admonition\" role=\"note\">\n<p class=\"admonition-title\">MariaDB dan <code class=\"docutils literal notranslate\">default</code></p>\n<p>MariaDB <a class=\"reference external\" href=\"https://jira.mariadb.org/browse/MDEV-12981\">doesn't support</a> parameter <code class=\"docutils literal notranslate\">default</code>.</p>\n</aside>\n</section>\n<section id=\"nthvalue\">\n<h3><code class=\"docutils literal notranslate\">NthValue</code><a class=\"heading-anchor\" href=\"#nthvalue\"><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.functions.NthValue\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">NthValue</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">expression</em>, <em class=\"sig-param\">nth<span class=\"o\">=</span><span class=\"default_value\">1</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.NthValue\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Computes the row relative to the offset <code class=\"docutils literal notranslate\">nth</code> (must be a positive value)\nwithin the window. Returns <code class=\"docutils literal notranslate\">None</code> if no row exists.</p>\n<p>Some databases may handle a nonexistent nth-value differently. For example,\nOracle returns an empty string rather than <code class=\"docutils literal notranslate\">None</code> for character-based\nexpressions. Django doesn't do any conversions in these cases.</p>\n</section>\n<section id=\"ntile\">\n<h3><code class=\"docutils literal notranslate\">Ntile</code><a class=\"heading-anchor\" href=\"#ntile\"><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.functions.Ntile\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Ntile</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">num_buckets<span class=\"o\">=</span><span class=\"default_value\">1</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Ntile\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Calculates a partition for each of the rows in the frame clause, distributing\nnumbers as evenly as possible between 1 and <code class=\"docutils literal notranslate\">num_buckets</code>. If the rows don't\ndivide evenly into a number of buckets, one or more buckets will be represented\nmore frequently.</p>\n</section>\n<section id=\"percentrank\">\n<h3><code class=\"docutils literal notranslate\">PercentRank</code><a class=\"heading-anchor\" href=\"#percentrank\"><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.functions.PercentRank\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">PercentRank</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>expressions</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.PercentRank\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Computes the relative rank of the rows in the frame clause. This computation is\nequivalent to evaluating:</p>\n<div class=\"code-block\" data-language=\"text\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Text</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Text code\"><code>(rank - 1) / (total rows - 1)\n</code></pre></div>\n<p>The following table explains the calculation for the relative rank of a row:</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p>Baris #</p></th>\n<th class=\"head\"><p>Nilai</p></th>\n<th class=\"head\"><p>Peringkat</p></th>\n<th class=\"head\"><p>Perhitungan</p></th>\n<th class=\"head\"><p>Relative Rank</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p>1</p></td>\n<td><p>15</p></td>\n<td><p>1</p></td>\n<td><p>(1-1)/(7-1)</p></td>\n<td><p>0.0000</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p>2</p></td>\n<td><p>20</p></td>\n<td><p>2</p></td>\n<td><p>(2-1)/(7-1)</p></td>\n<td><p>0.1666</p></td>\n</tr>\n<tr class=\"row-even\"><td><p>3</p></td>\n<td><p>20</p></td>\n<td><p>2</p></td>\n<td><p>(2-1)/(7-1)</p></td>\n<td><p>0.1666</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p>4</p></td>\n<td><p>20</p></td>\n<td><p>2</p></td>\n<td><p>(2-1)/(7-1)</p></td>\n<td><p>0.1666</p></td>\n</tr>\n<tr class=\"row-even\"><td><p>5</p></td>\n<td><p>30</p></td>\n<td><p>5</p></td>\n<td><p>(5-1)/(7-1)</p></td>\n<td><p>0.6666</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p>6</p></td>\n<td><p>30</p></td>\n<td><p>5</p></td>\n<td><p>(5-1)/(7-1)</p></td>\n<td><p>0.6666</p></td>\n</tr>\n<tr class=\"row-even\"><td><p>7</p></td>\n<td><p>40</p></td>\n<td><p>7</p></td>\n<td><p>(7-1)/(7-1)</p></td>\n<td><p>1.0000</p></td>\n</tr>\n</tbody>\n</table>\n</div>\n</section>\n<section id=\"rank\">\n<h3><code class=\"docutils literal notranslate\">Rank</code><a class=\"heading-anchor\" href=\"#rank\"><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.functions.Rank\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Rank</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>expressions</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.Rank\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Comparable to <a class=\"reference internal\" href=\"#django.db.models.functions.RowNumber\" title=\"django.db.models.functions.RowNumber\"><code class=\"xref py py-class docutils literal notranslate\">RowNumber</code></a>, this function ranks rows in the window. The\ncomputed rank contains gaps. Use <a class=\"reference internal\" href=\"#django.db.models.functions.DenseRank\" title=\"django.db.models.functions.DenseRank\"><code class=\"xref py py-class docutils literal notranslate\">DenseRank</code></a> to compute rank without\ngaps.</p>\n</section>\n<section id=\"rownumber\">\n<h3><code class=\"docutils literal notranslate\">RowNumber</code><a class=\"heading-anchor\" href=\"#rownumber\"><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.functions.RowNumber\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">RowNumber</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>expressions</em>, <em class=\"sig-param\"><span class=\"o\">**</span>extra</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.functions.RowNumber\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Computes the row number according to the ordering of either the frame clause\nor the ordering of the whole query if there is no partitioning of the\n<a class=\"reference internal\" href=\"/id/6.1/ref/models/expressions/#window-frames\"><span class=\"std std-ref\">window frame</span></a>.</p>\n</section>\n</section>","rootId":"module-django.db.models.functions","toc":[{"title":"Fungsi perbandingan dan perubahan","anchor":"comparison-and-conversion-functions","children":[{"title":"Cast","anchor":"cast","children":[]},{"title":"Coalesce","anchor":"coalesce","children":[]},{"title":"Collate","anchor":"collate","children":[]},{"title":"Greatest","anchor":"greatest","children":[]},{"title":"Least","anchor":"least","children":[]},{"title":"NullIf","anchor":"nullif","children":[]}]},{"title":"Fungsi tanggal","anchor":"date-functions","children":[{"title":"Extract","anchor":"extract","children":[{"title":"Kutipan DateField","anchor":"datefield-extracts","children":[]},{"title":"Kutipan DateTimeField","anchor":"datetimefield-extracts","children":[]}]},{"title":"Now","anchor":"now","children":[]},{"title":"Trunc","anchor":"trunc","children":[{"title":"Pemotongan DateField","anchor":"datefield-truncation","children":[]},{"title":"Pemotongan DateTimeField","anchor":"datetimefield-truncation","children":[]},{"title":"Pemotongan TimeField","anchor":"timefield-truncation","children":[]}]}]},{"title":"JSON Functions","anchor":"json-functions","children":[{"title":"JSONArray","anchor":"jsonarray","children":[]},{"title":"JSONObject","anchor":"jsonobject","children":[]}]},{"title":"Fungsi-fungsi Matematika","anchor":"math-functions","children":[{"title":"Abs","anchor":"abs","children":[]},{"title":"ACos","anchor":"acos","children":[]},{"title":"ASin","anchor":"asin","children":[]},{"title":"ATan","anchor":"atan","children":[]},{"title":"ATan2","anchor":"atan2","children":[]},{"title":"Ceil","anchor":"ceil","children":[]},{"title":"Cos","anchor":"cos","children":[]},{"title":"Cot","anchor":"cot","children":[]},{"title":"Degrees","anchor":"degrees","children":[]},{"title":"Exp","anchor":"exp","children":[]},{"title":"Floor","anchor":"floor","children":[]},{"title":"Ln","anchor":"ln","children":[]},{"title":"Log","anchor":"log","children":[]},{"title":"Mod","anchor":"mod","children":[]},{"title":"Pi","anchor":"pi","children":[]},{"title":"Power","anchor":"power","children":[]},{"title":"Radians","anchor":"radians","children":[]},{"title":"Random","anchor":"random","children":[]},{"title":"Round","anchor":"round","children":[]},{"title":"Sign","anchor":"sign","children":[]},{"title":"Sin","anchor":"sin","children":[]},{"title":"Sqrt","anchor":"sqrt","children":[]},{"title":"Tan","anchor":"tan","children":[]}]},{"title":"Fungsi teks","anchor":"text-functions","children":[{"title":"Chr","anchor":"chr","children":[]},{"title":"Concat","anchor":"concat","children":[]},{"title":"Left","anchor":"left","children":[]},{"title":"Length","anchor":"length","children":[]},{"title":"Lower","anchor":"lower","children":[]},{"title":"LPad","anchor":"lpad","children":[]},{"title":"LTrim","anchor":"ltrim","children":[]},{"title":"MD5","anchor":"md5","children":[]},{"title":"Ord","anchor":"ord","children":[]},{"title":"Repeat","anchor":"repeat","children":[]},{"title":"Replace","anchor":"replace","children":[]},{"title":"Reverse","anchor":"reverse","children":[]},{"title":"Right","anchor":"right","children":[]},{"title":"RPad","anchor":"rpad","children":[]},{"title":"RTrim","anchor":"rtrim","children":[]},{"title":"SHA1, SHA224, SHA256, SHA384, and SHA512","anchor":"sha1-sha224-sha256-sha384-and-sha512","children":[]},{"title":"StrIndex","anchor":"strindex","children":[]},{"title":"Substr","anchor":"substr","children":[]},{"title":"Trim","anchor":"trim","children":[]},{"title":"Upper","anchor":"upper","children":[]}]},{"title":"UUID functions","anchor":"uuid-functions","children":[{"title":"UUID4","anchor":"uuid4","children":[]},{"title":"UUID7","anchor":"uuid7","children":[]}]},{"title":"Fungsi Windows","anchor":"id5","children":[{"title":"CumeDist","anchor":"cumedist","children":[]},{"title":"DenseRank","anchor":"denserank","children":[]},{"title":"FirstValue","anchor":"firstvalue","children":[]},{"title":"Lag","anchor":"lag","children":[]},{"title":"LastValue","anchor":"lastvalue","children":[]},{"title":"Lead","anchor":"lead","children":[]},{"title":"NthValue","anchor":"nthvalue","children":[]},{"title":"Ntile","anchor":"ntile","children":[]},{"title":"PercentRank","anchor":"percentrank","children":[]},{"title":"Rank","anchor":"rank","children":[]},{"title":"RowNumber","anchor":"rownumber","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"Acuan API","url":"/id/6.1/ref/"},{"docname":"ref/models/index","title":"Model","url":"/id/6.1/ref/models/"}],"prev":{"docname":"ref/models/conditional-expressions","title":"Pernyataan Bersyarat","url":"/id/6.1/ref/models/conditional-expressions/"},"next":{"docname":"ref/paginator","title":"Paginator","url":"/id/6.1/ref/paginator/"},"formats":{"html":"/id/6.1/ref/models/database-functions/","markdown":"/id/6.1/ref/models/database-functions.md","json":"/id/6.1/ref/models/database-functions.json"},"source":"https://github.com/django/django/blob/stable/6.1.x/docs/ref/models/database-functions.txt","official":"https://docs.djangoproject.com/id/6.1/ref/models/database-functions/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}