{"title":"Membuat query","version":"1.11","locale":"id","docname":"topics/db/queries","url":"/id/1.11/topics/db/queries/","canonical":"https://djangodocs.dev/id/1.11/topics/db/queries/","summary":"Sekali anda telah membuat data models 1 anda, Django otomatis memberikan anda pemisahan API yang membuat anda membuat, mengambil, memperbaharui dan…","html":"<h1>Membuat query<a class=\"heading-anchor\" href=\"#making-queries\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Sekali anda telah membuat <span class=\"xref std std-doc\">data models 1</span> anda, Django otomatis memberikan anda pemisahan API yang membuat anda membuat, mengambil, memperbaharui dan menghapus obyek. Dokumen ini menjelaskan bagaimana menggunakan API ini. mengacu pada <span class=\"xref std std-doc\">data model reference 2</span> untuk rincian penuh dari beragam pilihan pencarian model.</p>\n<p>Sepanjang panduan ini (dan dalam acuan), kami akan mengacu ke model-model berikut, yang meliputi aplikasi Weblog:</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n<span class=\"k\">class</span> <span class=\"nc\">Blog</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">100</span><span class=\"p\">)</span>\n    tagline <span class=\"o\">=</span> models<span class=\"o\">.</span>TextField<span class=\"p\">()</span>\n\n    <span class=\"k\">def</span> <span class=\"fm\">__str__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>              <span class=\"c1\"># __unicode__ on Python 2</span>\n        <span class=\"k\">return</span> <span class=\"bp\">self</span><span class=\"o\">.</span>name\n\n<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\">200</span><span class=\"p\">)</span>\n    email <span class=\"o\">=</span> models<span class=\"o\">.</span>EmailField<span class=\"p\">()</span>\n\n    <span class=\"k\">def</span> <span class=\"fm\">__str__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>              <span class=\"c1\"># __unicode__ on Python 2</span>\n        <span class=\"k\">return</span> <span class=\"bp\">self</span><span class=\"o\">.</span>name\n\n<span class=\"k\">class</span> <span class=\"nc\">Entry</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    blog <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>Blog<span class=\"p\">,</span> on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">)</span>\n    headline <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">255</span><span class=\"p\">)</span>\n    body_text <span class=\"o\">=</span> models<span class=\"o\">.</span>TextField<span class=\"p\">()</span>\n    pub_date <span class=\"o\">=</span> models<span class=\"o\">.</span>DateField<span class=\"p\">()</span>\n    mod_date <span class=\"o\">=</span> models<span class=\"o\">.</span>DateField<span class=\"p\">()</span>\n    authors <span class=\"o\">=</span> models<span class=\"o\">.</span>ManyToManyField<span class=\"p\">(</span>Author<span class=\"p\">)</span>\n    n_comments <span class=\"o\">=</span> models<span class=\"o\">.</span>IntegerField<span class=\"p\">()</span>\n    n_pingbacks <span class=\"o\">=</span> models<span class=\"o\">.</span>IntegerField<span class=\"p\">()</span>\n    rating <span class=\"o\">=</span> models<span class=\"o\">.</span>IntegerField<span class=\"p\">()</span>\n\n    <span class=\"k\">def</span> <span class=\"fm\">__str__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>              <span class=\"c1\"># __unicode__ on Python 2</span>\n        <span class=\"k\">return</span> <span class=\"bp\">self</span><span class=\"o\">.</span>headline\n</code></pre></div>\n<section id=\"creating-objects\">\n<h2>Membuat obyek<a class=\"heading-anchor\" href=\"#creating-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Untuk mewakili data tabel-basisdata dalam obyek Python, Django menggunakan sistem intuitif: Sebuah kelas model mewakili sebuah tabel basisdata, dan sebuah instance dari kelas itu mewakili rekaman tertentu dalam tabel basisdata.</p>\n<p>Untuk membuat sebuah obyek, instansiasi itu menggunakan argumen katakunci pada kelas model, kemudian memanggil <a class=\"reference internal\" href=\"/id/1.11/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a> untuk menyimpan itu ke basisdata.</p>\n<p>Menganggap model tinggal di berkas <code class=\"docutils literal notranslate\">mysite/blog/models.py</code>, ini adalah sebuah contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">blog.models</span> <span class=\"kn\">import</span> Blog\n<span class=\"gp\">&gt;&gt;&gt; </span>b <span class=\"o\">=</span> Blog<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s1\">&#39;Beatles Blog&#39;</span><span class=\"p\">,</span> tagline<span class=\"o\">=</span><span class=\"s1\">&#39;All the latest Beatles news.&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>b<span class=\"o\">.</span>save<span class=\"p\">()</span>\n</code></pre></div>\n<p>Ini melakukan pernyataan SQL <code class=\"docutils literal notranslate\">INSERT</code> dibelakang layar. Django tidak mengenai basisdata sampai anda secara jelas memanggil <a class=\"reference internal\" href=\"/id/1.11/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a>.</p>\n<p>Cara <a class=\"reference internal\" href=\"/id/1.11/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a> tidak mempunyai nilai kembalian.</p>\n<aside class=\"admonition admonition-seealso\" role=\"note\">\n<p class=\"admonition-title\">Lihat juga</p>\n<p><a class=\"reference internal\" href=\"/id/1.11/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a> mengambil sejumalh pilihan keuntungan tidak digambarkan disini. Lihat dokumentasi untuk <a class=\"reference internal\" href=\"/id/1.11/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a> untuk rincian lengkap.</p>\n<p>Untuk membuat dan menyimpan sebuah obyek dalam langkah tunggal, gunakan cara <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.create\" title=\"django.db.models.query.QuerySet.create\"><code class=\"xref py py-meth docutils literal notranslate\">create()</code></a>.</p>\n</aside>\n</section>\n<section id=\"saving-changes-to-objects\">\n<h2>Menyimpan perubahan ke obyek<a class=\"heading-anchor\" href=\"#saving-changes-to-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Untuk menyimpan perubahan ke sebuah obyek yang sudah ada di basisdata gunakan <a class=\"reference internal\" href=\"/id/1.11/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a>.</p>\n<p>Diberikan instance <code class=\"docutils literal notranslate\">Blog</code> <code class=\"docutils literal notranslate\">b5</code> yang telah disimpan ke basisdata, contoh ini merubah namanya dan memperbaharui rekamannya dalam basisdata:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>b5<span class=\"o\">.</span>name <span class=\"o\">=</span> <span class=\"s1\">&#39;New name&#39;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>b5<span class=\"o\">.</span>save<span class=\"p\">()</span>\n</code></pre></div>\n<p>Ini melakukan pernyataan SQL <code class=\"docutils literal notranslate\">UPDATE</code> dibelakang layar. Django tidak mengenai basisdata sampai anda secara jelas memanggil <a class=\"reference internal\" href=\"/id/1.11/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a>.</p>\n<section id=\"saving-foreignkey-and-manytomanyfield-fields\">\n<h3>Menyimpan bidang <code class=\"docutils literal notranslate\">ForeignKey</code> dan <code class=\"docutils literal notranslate\">ManyToManyField</code><a class=\"heading-anchor\" href=\"#saving-foreignkey-and-manytomanyfield-fields\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Memperbaharui bidang <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a>  bekerja tepat cara sama ketika menyimpan bidang biasa -- cukup menugaskan sebuah obyek dari jenis yang benar pada bidang dalam pertanyaan. Contoh ini memperbaharui atribut <code class=\"docutils literal notranslate\">blog</code> dari sebuah instance <code class=\"docutils literal notranslate\">Entry</code>, menganggap instance-instance sesuai dari <code class=\"docutils literal notranslate\">Entry</code> dan <code class=\"docutils literal notranslate\">Blog</code> sudah disimpan ke basisdata (jadi kami dapat mengambil mereka dibawah):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">blog.models</span> <span class=\"kn\">import</span> Blog<span class=\"p\">,</span> Entry\n<span class=\"gp\">&gt;&gt;&gt; </span>entry <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>pk<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>cheese_blog <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;Cheddar Talk&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>entry<span class=\"o\">.</span>blog <span class=\"o\">=</span> cheese_blog\n<span class=\"gp\">&gt;&gt;&gt; </span>entry<span class=\"o\">.</span>save<span class=\"p\">()</span>\n</code></pre></div>\n<p>Memperbaharui sebuah <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> bekerja sedikit berbeda -- gunakan metode <a class=\"reference internal\" href=\"/id/1.11/ref/models/relations/#django.db.models.fields.related.RelatedManager.add\" title=\"django.db.models.fields.related.RelatedManager.add\"><code class=\"xref py py-meth docutils literal notranslate\">add()</code></a> pada bidang untuk menambahkan rekaman ke hubungan. Contoh ini menambahkan instance <code class=\"docutils literal notranslate\">Author</code> <code class=\"docutils literal notranslate\">joe</code> ke obyek <code class=\"docutils literal notranslate\">entry</code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">blog.models</span> <span class=\"kn\">import</span> Author\n<span class=\"gp\">&gt;&gt;&gt; </span>joe <span class=\"o\">=</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;Joe&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>entry<span class=\"o\">.</span>authors<span class=\"o\">.</span>add<span class=\"p\">(</span>joe<span class=\"p\">)</span>\n</code></pre></div>\n<p>Untuk menambahkan banyak rekaman pada <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> dalam sekali pergi, sertakan banyak argumen dalam panggilan pada <a class=\"reference internal\" href=\"/id/1.11/ref/models/relations/#django.db.models.fields.related.RelatedManager.add\" title=\"django.db.models.fields.related.RelatedManager.add\"><code class=\"xref py py-meth docutils literal notranslate\">add()</code></a>, seperti ini:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>john <span class=\"o\">=</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>\n<span class=\"gp\">&gt;&gt;&gt; </span>paul <span class=\"o\">=</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;Paul&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>george <span class=\"o\">=</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;George&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>ringo <span class=\"o\">=</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;Ringo&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>entry<span class=\"o\">.</span>authors<span class=\"o\">.</span>add<span class=\"p\">(</span>john<span class=\"p\">,</span> paul<span class=\"p\">,</span> george<span class=\"p\">,</span> ringo<span class=\"p\">)</span>\n</code></pre></div>\n<p>Django akan mengeluh jika anda mencoba memberikan atau menambahkan sebuah obyek dari jenis salah.</p>\n</section>\n</section>\n<section id=\"retrieving-objects\">\n<span id=\"id1\"></span><h2>Mengambil obyek<a class=\"heading-anchor\" href=\"#retrieving-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Untuk mengambil obyek-obyek dari basisdata anda, bangun sebuah <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> melalui <a class=\"reference internal\" href=\"/id/1.11/topics/db/managers/#django.db.models.Manager\" title=\"django.db.models.Manager\"><code class=\"xref py py-class docutils literal notranslate\">Manager</code></a> pada kelas model anda.</p>\n<p>Sebuah <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> mewakili sebuah kumpulan dari ibyek-obyek dari basisdata anda. itu dapat memiliki nol, satu atau banyak <em>penyaring</em>. Penyaring mempersempit hasil permintaan berdasarkan pada parameter yang diberikan. Dalam istilah SQL, <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> menyamakan pada pernyataan <code class=\"docutils literal notranslate\">SELECT</code>, dan penyaring membatasi klausa seperti <code class=\"docutils literal notranslate\">WHERE</code> atau <code class=\"docutils literal notranslate\">LIMIT</code>.</p>\n<p>Anda mendapatkan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> dengan menggunakan <a class=\"reference internal\" href=\"/id/1.11/topics/db/managers/#django.db.models.Manager\" title=\"django.db.models.Manager\"><code class=\"xref py py-class docutils literal notranslate\">Manager</code></a> model anda. Setiap model mempunyai setidaknya satu <a class=\"reference internal\" href=\"/id/1.11/topics/db/managers/#django.db.models.Manager\" title=\"django.db.models.Manager\"><code class=\"xref py py-class docutils literal notranslate\">Manager</code></a>, dan itu memanggil <a class=\"reference internal\" href=\"/id/1.11/ref/models/class/#django.db.models.Model.objects\" title=\"django.db.models.Model.objects\"><code class=\"xref py py-attr docutils literal notranslate\">objects</code></a> secara awalan. Akses itu langsung melalui kelas model, seperti itu:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects\n<span class=\"go\">&lt;django.db.models.manager.Manager object at ...&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>b <span class=\"o\">=</span> Blog<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s1\">&#39;Foo&#39;</span><span class=\"p\">,</span> tagline<span class=\"o\">=</span><span class=\"s1\">&#39;Bar&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>b<span class=\"o\">.</span>objects\n<span class=\"go\">Traceback:</span>\n<span class=\"go\">    ...</span>\n<span class=\"go\">AttributeError: &quot;Manager isn&#39;t accessible via Blog instances.&quot;</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Catatan</p>\n<p><code class=\"docutils literal notranslate\">Managers</code> dapat diakses hanya melalui kelas-kelas model, daripada dari instance model, untuk melaksanakan pemisahan diantara tindakan &quot;tingkat-tabel&quot; dan tindakan &quot;tingkat-rekam&quot;.</p>\n</aside>\n<p><a class=\"reference internal\" href=\"/id/1.11/topics/db/managers/#django.db.models.Manager\" title=\"django.db.models.Manager\"><code class=\"xref py py-class docutils literal notranslate\">Manager</code></a> adalah sumber utama dari <code class=\"docutils literal notranslate\">QuerySets</code> untuk sebuah model. Sebagai contoh, <code class=\"docutils literal notranslate\">Blog.objects.all()</code> mengembalikan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> yang mengandung semua obyek <code class=\"docutils literal notranslate\">Blog</code> dalam basisdata.</p>\n<section id=\"retrieving-all-objects\">\n<h3>Mengambil semua obyek<a class=\"heading-anchor\" href=\"#retrieving-all-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Cara termudah untuk mengambil obyek dari sebuah tabel adalah mendapatkan semua dari mereka. Untuk melakukan ini, gunakan metode <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.all\" title=\"django.db.models.query.QuerySet.all\"><code class=\"xref py py-meth docutils literal notranslate\">all()</code></a> pada sebuah <a class=\"reference internal\" href=\"/id/1.11/topics/db/managers/#django.db.models.Manager\" title=\"django.db.models.Manager\"><code class=\"xref py py-class docutils literal notranslate\">Manager</code></a>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>all_entries <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()</span>\n</code></pre></div>\n<p>Metode <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.all\" title=\"django.db.models.query.QuerySet.all\"><code class=\"xref py py-meth docutils literal notranslate\">all()</code></a> mengembalikan semua <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> dari semua obyek dalam basisdata.</p>\n</section>\n<section id=\"retrieving-specific-objects-with-filters\">\n<h3>Mengambil obyek spesifik dengan menyaring<a class=\"heading-anchor\" href=\"#retrieving-specific-objects-with-filters\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> dibalikkan oleh <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.all\" title=\"django.db.models.query.QuerySet.all\"><code class=\"xref py py-meth docutils literal notranslate\">all()</code></a> menggambarkan semua obyek-obyek dalam tabel basisdata. Biasanya, meskipun, anda akan butuh memilih hanya sub kumpulan dari kumpulan lengkap dari obyek.</p>\n<p>Untuk membuat semacam sub kumpulan, anda menyaring  <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> awalan, menambahkan kondisi penyaringan. Dua cara paling umum untuk menyaring <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> adalah:</p>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\">filter(**kwargs)</code></dt><dd><p>Mengembalikan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> baru mengandung obyek-obyek yang cocok dari parameter pencarian yang diberikan.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">exclude(**kwargs)</code></dt><dd><p>Mengembalikan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> baru mengandung obyek-obyek yang <em>tidak</em> cocok dari parameter pencarian yang diberikan.</p>\n</dd>\n</dl>\n<p>Parameter pencarian (<code class=\"docutils literal notranslate\">**kwargs</code> dalam penertian fungsi diatas) harus berupa dalam bentuk digambarkan dalam <a class=\"reference internal\" href=\"#field-lookups\">Field lookups</a> dibawah.</p>\n<p>Sebagai contoh, untuk mendapatkan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> dari masukan blog dari tahun 2006, gunakan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.filter\" title=\"django.db.models.query.QuerySet.filter\"><code class=\"xref py py-meth docutils literal notranslate\">filter()</code></a> seperti itu:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__year<span class=\"o\">=</span><span class=\"mi\">2006</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Dengan kelas pengelola awalan, itu adalah sama seperti:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()</span><span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__year<span class=\"o\">=</span><span class=\"mi\">2006</span><span class=\"p\">)</span>\n</code></pre></div>\n<section id=\"chaining-filters\">\n<span id=\"id2\"></span><h4>Menambatkan penyaringan<a class=\"heading-anchor\" href=\"#chaining-filters\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Hasil dari pengilangan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> adalah itu sendiri <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a>, jadi itu mungkin menambatkan pengilangan bersama-sama. Sebagai contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    headline__startswith<span class=\"o\">=</span><span class=\"s1\">&#39;What&#39;</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>exclude<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    pub_date__gte<span class=\"o\">=</span>datetime<span class=\"o\">.</span>date<span class=\"o\">.</span>today<span class=\"p\">()</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span><span class=\"o\">.</span>filter<span class=\"p\">(</span>\n<span class=\"gp\">... </span>    pub_date__gte<span class=\"o\">=</span>datetime<span class=\"o\">.</span>date<span class=\"p\">(</span><span class=\"mi\">2005</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">30</span><span class=\"p\">)</span>\n<span class=\"gp\">... </span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Ini mengambil awal <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> dari semua masukan dalam basisdata, tambah sebuah penyaring, kemudian sebuah pengecualian, kemudian penyaring lain. Hasil akhir adalah sebuah <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> mengandung semua masukan dengan judul yang mulai dengan &quot;What&quot;, yang diterbitkan diantara 30 Januari 2005, dan hari saat ini.</p>\n</section>\n<section id=\"filtered-querysets-are-unique\">\n<span id=\"id3\"></span><h4>Disaring <code class=\"docutils literal notranslate\">QuerySet</code> adalah unik<a class=\"heading-anchor\" href=\"#filtered-querysets-are-unique\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Setiap kali anda menyaring sebuah <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a>, anda mendapatkan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> merek-baru yaitu tidak ada cara mengikat ke <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> sebelumnya. Setiap penyaringan membuat <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> terpisah dan berbeda yang dapat disimpan, digunakan dan digunakan kembali.</p>\n<p>Contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>q1 <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>headline__startswith<span class=\"o\">=</span><span class=\"s2\">&quot;What&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>q2 <span class=\"o\">=</span> q1<span class=\"o\">.</span>exclude<span class=\"p\">(</span>pub_date__gte<span class=\"o\">=</span>datetime<span class=\"o\">.</span>date<span class=\"o\">.</span>today<span class=\"p\">())</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>q3 <span class=\"o\">=</span> q1<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__gte<span class=\"o\">=</span>datetime<span class=\"o\">.</span>date<span class=\"o\">.</span>today<span class=\"p\">())</span>\n</code></pre></div>\n<p>Ketiga <code class=\"docutils literal notranslate\">QuerySets</code> ini terpisah. Pertama adalah dasar <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> mengandung semua masukan yang mengandung judul dimulai dengan &quot;What&quot;. kedua adalah sub kumpulan dari pertama, dengan sebuah tambahan kriteria yang tidak menyertakan rekaman yang <code class=\"docutils literal notranslate\">pub_date</code> adalah hari ini atau di masa depan. Ketiga adalah sub kumpulan dari pertama, dengan tambahan kriteria yang hanya memilih rekaman yang <code class=\"docutils literal notranslate\">pub_date</code> adalah hari ini atau di masa depan. Awalan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> (<code class=\"docutils literal notranslate\">q1</code>) tidak terpengaruh dengan pengolahan penyaringan.</p>\n</section>\n<section id=\"querysets-are-lazy\">\n<span id=\"id4\"></span><h4><code class=\"docutils literal notranslate\">QuerySet</code> adalah lazy<a class=\"heading-anchor\" href=\"#querysets-are-lazy\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p><code class=\"docutils literal notranslate\">QuerySets</code> adalah lazy -- tindakan dari membuat <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> tidak melibatkan aktifitas basisdata apapun. Anda dapat menumpuk penyaring bersama-sama sepanjang hari, dan Django tidak sebenarnya menjalankan permintaan sampai <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> <em>dinilai</em>. Coba lihat contoh ini:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>q <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>headline__startswith<span class=\"o\">=</span><span class=\"s2\">&quot;What&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>q <span class=\"o\">=</span> q<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__lte<span class=\"o\">=</span>datetime<span class=\"o\">.</span>date<span class=\"o\">.</span>today<span class=\"p\">())</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>q <span class=\"o\">=</span> q<span class=\"o\">.</span>exclude<span class=\"p\">(</span>body_text__icontains<span class=\"o\">=</span><span class=\"s2\">&quot;food&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>q<span class=\"p\">)</span>\n</code></pre></div>\n<p>Meskipun ini terlihat mengenai basisdata tiga kali, sebenarnya itu mengenai basisdata hanya sekali, pada baris terakhir (<code class=\"docutils literal notranslate\">print(q)</code>). Secara umum, hasil dari <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> tidak diambil dari basisdata sampai anda &quot;meminta&quot; untuk mereka. Ketika anda melakukan, <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> <em>dinilai</em> dengan mengakses basisdata. Untuk rincian lebih pada sebenarnya ketika penilaian mengambil tempat, lihat <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#when-querysets-are-evaluated\"><span class=\"std std-ref\">When QuerySets are evaluated</span></a>.</p>\n</section>\n</section>\n<section id=\"retrieving-a-single-object-with-get\">\n<span id=\"retrieving-single-object-with-get\"></span><h3>Mengambil obyek tunggal dengan <code class=\"docutils literal notranslate\">get()</code><a class=\"heading-anchor\" href=\"#retrieving-a-single-object-with-get\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.filter\" title=\"django.db.models.query.QuerySet.filter\"><code class=\"xref py py-meth docutils literal notranslate\">filter()</code></a> akan selalu memberikan anda <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a>, bahkan jika hanya obyek tunggal yang cocok permintaan - dalam kasus ini, itu akan berupa <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> mengandung unsur tunggal.</p>\n<p>Jika anda mengetahui hanya ada satu obyek yang cocok permintaan anda, anda dapat menggunakan metode meth:~django.db.models.query.QuerySet.get pada sebuah <a class=\"reference internal\" href=\"/id/1.11/topics/db/managers/#django.db.models.Manager\" title=\"django.db.models.Manager\"><code class=\"xref py py-class docutils literal notranslate\">Manager</code></a> yang mengembalikan obyek secara langsung:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>one_entry <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>pk<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Anda dapat menggunakan pernyataan permintaan apapun dengan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.get\" title=\"django.db.models.query.QuerySet.get\"><code class=\"xref py py-meth docutils literal notranslate\">get()</code></a>, seperti dengan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.filter\" title=\"django.db.models.query.QuerySet.filter\"><code class=\"xref py py-meth docutils literal notranslate\">filter()</code></a> - kembali, lihat <a class=\"reference internal\" href=\"#field-lookups\">Field lookups</a> dibawah.</p>\n<p>Catat bahwa ada perbedaan diantara menggunakan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.get\" title=\"django.db.models.query.QuerySet.get\"><code class=\"xref py py-meth docutils literal notranslate\">get()</code></a>, dan menggunakan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.filter\" title=\"django.db.models.query.QuerySet.filter\"><code class=\"xref py py-meth docutils literal notranslate\">filter()</code></a> dengan potongan <code class=\"docutils literal notranslate\">[0]</code>. Jika tidak ada hasil yang cocok dengan permintaan, <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.get\" title=\"django.db.models.query.QuerySet.get\"><code class=\"xref py py-meth docutils literal notranslate\">get()</code></a> akan memunculkan pengecualian <code class=\"docutils literal notranslate\">DoesNotExist</code>. Pengecualian ini adalah sebuah atribut dari kelas model yang permintaan sedang dilakukan - jadi dalam kode diatas, jika tidak ada obyek <code class=\"docutils literal notranslate\">Entry</code> dengan primary key dari 1, Django akan memunculkan <code class=\"docutils literal notranslate\">Entry.DoesNotExist</code>.</p>\n<p>Demikain pula, Django akan mengeluh jika lebih dari satu barang cocok permintaan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.get\" title=\"django.db.models.query.QuerySet.get\"><code class=\"xref py py-meth docutils literal notranslate\">get()</code></a>. Dalam kasus ini, itu akan memunculkan <a class=\"reference internal\" href=\"/id/1.11/ref/exceptions/#django.core.exceptions.MultipleObjectsReturned\" title=\"django.core.exceptions.MultipleObjectsReturned\"><code class=\"xref py py-exc docutils literal notranslate\">MultipleObjectsReturned</code></a>, yang kembali adalah sebuah atribut dari kelas model itu sendiri.</p>\n</section>\n<section id=\"other-queryset-methods\">\n<h3>Cara <code class=\"docutils literal notranslate\">QuerySet</code> lain<a class=\"heading-anchor\" href=\"#other-queryset-methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Kebanyakan waktu anda akan gunakan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.all\" title=\"django.db.models.query.QuerySet.all\"><code class=\"xref py py-meth docutils literal notranslate\">all()</code></a>, <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.get\" title=\"django.db.models.query.QuerySet.get\"><code class=\"xref py py-meth docutils literal notranslate\">get()</code></a>, <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.filter\" title=\"django.db.models.query.QuerySet.filter\"><code class=\"xref py py-meth docutils literal notranslate\">filter()</code></a> dan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.exclude\" title=\"django.db.models.query.QuerySet.exclude\"><code class=\"xref py py-meth docutils literal notranslate\">exclude()</code></a> ketika anda butuh mencari obyek-obyek dari basisdata. Bagaimanapun, itu jauh dari semua yang ada; lihat <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#queryset-api\"><span class=\"std std-ref\">QuerySet API Reference</span></a> untuk daftar lengkap dari semua ragam metode <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a>.</p>\n</section>\n<section id=\"limiting-querysets\">\n<span id=\"id5\"></span><h3>Membatasi <code class=\"docutils literal notranslate\">QuerySet</code><a class=\"heading-anchor\" href=\"#limiting-querysets\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Gunakan sub kumpulan dari sintaksis memotong-array Python untuk membatasi <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> anda pada nomor tertentu dari hasil. Ini adalah setara daro klausa <code class=\"docutils literal notranslate\">LIMIT</code> dan <code class=\"docutils literal notranslate\">OFFSET</code> SQL.</p>\n<p>Sebagai contoh, ini mengembalikan 5 obyek pertama (<code class=\"docutils literal notranslate\">LIMIT 5</code>):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()[:</span><span class=\"mi\">5</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>Ini mengembalikan enam dari 10 obyek (<code class=\"docutils literal notranslate\">OFFSET 5 LIMIT 5</code>):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()[</span><span class=\"mi\">5</span><span class=\"p\">:</span><span class=\"mi\">10</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>Pengindeksan negatif (yaitu <code class=\"docutils literal notranslate\">Entry.objects.all()[-1]</code>) tidak didukung.</p>\n<p>Umumnya, memotong <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> mengembalikan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> baru -- itu tidak menilai permintaan. Sebuah pengevualian jika anda menggunakan parameter &quot;step&quot; dari sintaksis potongan Python. Sebagai contoh, ini akan sebenarnya menjalankan permintaan untuk menjalankan daftar dari setiap <em>detik</em> obyek dari 10 pertama:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()[:</span><span class=\"mi\">10</span><span class=\"p\">:</span><span class=\"mi\">2</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>Untuk mengambil obyek <em>tunggal</em> daripada sebuah list (sebagai contoh <code class=\"docutils literal notranslate\">SELECT foo FROM bar LIMIT 1</code>), gunakan indeks sederhana sebagai gantinya dari potongan. Sebagai contoh, ini mengembalikan <code class=\"docutils literal notranslate\">Entry</code> pertama dalam basisdata, setelah mengurutkan masukan secara alfabet berdasarkan judul:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s1\">&#39;headline&#39;</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>Ini kurang lebih setara pada:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>order_by<span class=\"p\">(</span><span class=\"s1\">&#39;headline&#39;</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">:</span><span class=\"mi\">1</span><span class=\"p\">]</span><span class=\"o\">.</span>get<span class=\"p\">()</span>\n</code></pre></div>\n<p>Catat, bagaimanapun, yang pertama dari ini akan memunculkan <code class=\"docutils literal notranslate\">IndexError</code> selagi kedua akan memunculkan <code class=\"docutils literal notranslate\">DoesNotExist</code> jika tidak ada obyek cocok dari kriteria yang diberikan. Lihat <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.get\" title=\"django.db.models.query.QuerySet.get\"><code class=\"xref py py-meth docutils literal notranslate\">get()</code></a> untuk rincian lebih.</p>\n</section>\n<section id=\"field-lookups\">\n<span id=\"field-lookups-intro\"></span><h3>Bidang pencarian<a class=\"heading-anchor\" href=\"#field-lookups\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Pencarian bidang adalah bagaimana anda menentukan isi dari sebuah klausa SQL <code class=\"docutils literal notranslate\">WHERE</code>. Mereka ditentukan sebagai argumen kata kunci pada <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> metode metode <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.filter\" title=\"django.db.models.query.QuerySet.filter\"><code class=\"xref py py-meth docutils literal notranslate\">filter()</code></a>, <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.exclude\" title=\"django.db.models.query.QuerySet.exclude\"><code class=\"xref py py-meth docutils literal notranslate\">exclude()</code></a> dan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.get\" title=\"django.db.models.query.QuerySet.get\"><code class=\"xref py py-meth docutils literal notranslate\">get()</code></a>.</p>\n<p>Argumen kata kunci pencarian dasar mengambil formulir <code class=\"docutils literal notranslate\">field__lookuptype=value</code>. (Itu adalah garis bawah ganda). Sebagai contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__lte<span class=\"o\">=</span><span class=\"s1\">&#39;2006-01-01&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>terjemahan (kurang lebih) ke dalam SQL berikut:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"o\">*</span> <span class=\"k\">FROM</span> blog_entry <span class=\"k\">WHERE</span> pub_date <span class=\"o\">&lt;=</span> <span class=\"s1\">&#39;2006-01-01&#39;</span><span class=\"p\">;</span>\n</code></pre></div>\n<aside class=\"admonition-how-this-is-possible admonition\" role=\"note\">\n<p class=\"admonition-title\">Bagaimana ini mungkin</p>\n<p>Python mempunyai kemampuan untuk menentukan fungsi-fungsi yang menerima argumen nilai-nama beruubah-ubah yang namanya dan nilainya dinilai pada waktu berjalan. Untuk informasi lebih, lihat <a class=\"reference external\" href=\"https://docs.python.org/3/tutorial/controlflow.html#tut-keywordargs\" title=\"(di Python v3.14)\"><span>Keyword Arguments</span></a> dalam tutorial Python resmi.</p>\n</aside>\n<p>Bidang ditentukan dalam pencarian harus berupa nama dari bidang model. meskipun ada satu pengecualian, dalam kasus dari <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> anda dapat menentukan nama bidang akhiran dengan <code class=\"docutils literal notranslate\">_id</code>. Dalam kasus ini, parameter nilai diharapkan mengandung nilai mentah dari foreign primary key model. Sebagai contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>blog_id<span class=\"o\">=</span><span class=\"mi\">4</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Jika anda melewatkan argumen kata kunci tidak sah, fungsi pencarian akan memunculkan <code class=\"docutils literal notranslate\">TypeError</code>.</p>\n<p>API basisdata mendukung sekitar dua lusin jenis pencarian; acuan lengkap dapat ditemukan dalam <span class=\"xref std std-ref\">field lookup reference 1</span>. Untuk memberikan anda selera dari apa yang tersedia, ini adalah beberapa dari pencarian lebih umum anda mungkin gunakan:</p>\n<dl>\n<dt><a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#std-fieldlookup-exact\"><code class=\"xref std std-lookup docutils literal notranslate\">exact</code></a></dt><dd><p>Sebuah pencocokan &quot;tepat&quot;. Sebagai contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>headline__exact<span class=\"o\">=</span><span class=\"s2\">&quot;Cat bites dog&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Akan membangkitkan SQL bersama baris ini:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> headline <span class=\"o\">=</span> <span class=\"s1\">&#39;Cat bites dog&#39;</span><span class=\"p\">;</span>\n</code></pre></div>\n<p>Jika anda tidak menyediakan jenis pencarian -- yaitu, jika argumen kata kunci anda tidak mengandung garis bawah ganda -- jenis pencarian dianggap <code class=\"docutils literal notranslate\">tepat</code>.</p>\n<p>Sebagai contoh, dua pernyataan berikut adalah setara:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>id__exact<span class=\"o\">=</span><span class=\"mi\">14</span><span class=\"p\">)</span>  <span class=\"c1\"># Explicit form</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">14</span><span class=\"p\">)</span>         <span class=\"c1\"># __exact is implied</span>\n</code></pre></div>\n<p>Ini adalah untuk kenyamanan, karena pencarian <code class=\"docutils literal notranslate\">exact</code> adalah kasus umum.</p>\n</dd>\n<dt><a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#std-fieldlookup-iexact\"><code class=\"xref std std-lookup docutils literal notranslate\">iexact</code></a></dt><dd><p>Pencocokan kasus-tidak-peka. Jadi, permintaan:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>name__iexact<span class=\"o\">=</span><span class=\"s2\">&quot;beatles blog&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Akan cocok <code class=\"docutils literal notranslate\">Blog</code> berjudul <code class=\"docutils literal notranslate\">&quot;Beatles Blog&quot;</code>, <code class=\"docutils literal notranslate\">&quot;beatles blog&quot;</code>, atau bahkan <code class=\"docutils literal notranslate\">&quot;BeAtlES blOG&quot;</code>.</p>\n</dd>\n<dt><a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#std-fieldlookup-contains\"><code class=\"xref std std-lookup docutils literal notranslate\">contains</code></a></dt><dd><p>Percobaan penahanan kasus-peka . Sebagai contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>headline__contains<span class=\"o\">=</span><span class=\"s1\">&#39;Lennon&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Kurang lebih menterjemahkan ke SQL ini:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> headline <span class=\"k\">LIKE</span> <span class=\"s1\">&#39;%Lennon%&#39;</span><span class=\"p\">;</span>\n</code></pre></div>\n<p>Catat ini akan cocok dengan judul  <code class=\"docutils literal notranslate\">'Today Lennon honored'</code> tetapi tidak <code class=\"docutils literal notranslate\">'today lennon honored'</code>.</p>\n<p>Ada juga versi kasus-tidak-peka,  <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#std-fieldlookup-icontains\"><code class=\"xref std std-lookup docutils literal notranslate\">icontains</code></a>.</p>\n</dd>\n<dt><a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#std-fieldlookup-startswith\"><code class=\"xref std std-lookup docutils literal notranslate\">startswith</code></a>, <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#std-fieldlookup-endswith\"><code class=\"xref std std-lookup docutils literal notranslate\">endswith</code></a></dt><dd><p>Pencarian mulai-dengan dan berakhir-dengan, masing-masing. Ada juga versi kasus-tidak-peka dipanggil <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#std-fieldlookup-istartswith\"><code class=\"xref std std-lookup docutils literal notranslate\">istartswith</code></a> dan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#std-fieldlookup-iendswith\"><code class=\"xref std std-lookup docutils literal notranslate\">iendswith</code></a>.</p>\n</dd>\n</dl>\n<p>Kembali, ini hanya menggores permukaan. Acuan lengkap dapat ditemukan di <span class=\"xref std std-ref\">field lookup reference 1</span>.</p>\n</section>\n<section id=\"lookups-that-span-relationships\">\n<span id=\"id6\"></span><h3>Pencarian yang menjangkau hubungan<a class=\"heading-anchor\" href=\"#lookups-that-span-relationships\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Django menawarkan cara hebat dan intituitif untuk &quot;mengikuti&quot; hubungan dalam pencarian, merawat dari SQL <code class=\"docutils literal notranslate\">JOIN</code> untuk anda otomatis, dibelakang layar. Untuk menjangkau hubungan, cukup gunakan nama bidang dari bidang terkait terhadap model, dipisahkan oleh garisbawah ganda, sampai anda mendapatkan bidang anda inginkan.</p>\n<p>Contoh ini mengambil semua obyek <code class=\"docutils literal notranslate\">Entry</code> dengan <code class=\"docutils literal notranslate\">Blog</code> yang <code class=\"docutils literal notranslate\">name</code> adalah <code class=\"docutils literal notranslate\">'Beatles Blog'</code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>blog__name<span class=\"o\">=</span><span class=\"s1\">&#39;Beatles Blog&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Jangkauan ini dapat sedalam anda sukai.</p>\n<p>Itu bekerja kebelakang, juga. Untuk mengacu hubungan &quot;reverse&quot;, cukup gunakan nama huruf kecil dari model.</p>\n<p>Contoh ini mengambil semua obyek <code class=\"docutils literal notranslate\">Blog</code> yang setidaknya saru <code class=\"docutils literal notranslate\">Entry</code> yang <code class=\"docutils literal notranslate\">headline</code> mengandung <code class=\"docutils literal notranslate\">'Lennon'</code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>entry__headline__contains<span class=\"o\">=</span><span class=\"s1\">&#39;Lennon&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Jika anda menyaring terhadap banyak hubungan dan satu dari model mengengah tidak mempunyai nilai yang memenuhi kondisi penyaring, Django akan memperlakukan itu sebagai jika sebuah kosong (semua nilai adalah <code class=\"docutils literal notranslate\">NULL</code>), tetapi obyek sah disana. Semua ini berarti bahwa tidak ada kesalahan akan dimunculkan. Sebagi contoh, dalam penyaringan ini:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>entry__authors__name<span class=\"o\">=</span><span class=\"s1\">&#39;Lennon&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>(jika ada model <code class=\"docutils literal notranslate\">Author</code> terkait), jika tidak ada <code class=\"docutils literal notranslate\">author</code> terkait dengan sebuah masukan, itu akan diperlakukan seperti jika tidak ada juga <code class=\"docutils literal notranslate\">name</code> terlampir, daripada memunculkan kesalahan karena dari <code class=\"docutils literal notranslate\">author</code> hilang. Biasanya ini adalah tepatnya apa anda ingin miliki terjadi. Kasus satu-satunya dimana itu mungkin membingungkan adalah jika anda menggunakan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#std-fieldlookup-isnull\"><code class=\"xref std std-lookup docutils literal notranslate\">isnull</code></a>. Jadi:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>entry__authors__name__isnull<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>akan mengembalikan obyek <code class=\"docutils literal notranslate\">Blog</code> yang mempunyai <code class=\"docutils literal notranslate\">name</code> kosong pada <code class=\"docutils literal notranslate\">author</code> dan juga itu yang mempunyai <code class=\"docutils literal notranslate\">author</code> kosong pada <code class=\"docutils literal notranslate\">entry</code>. Jika anda tidak ingin obyek terakhir itu, anda dapat menulis:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>entry__authors__isnull<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">,</span> entry__authors__name__isnull<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<section id=\"spanning-multi-valued-relationships\">\n<h4>Membentangkan hubungan banyak-nilai<a class=\"heading-anchor\" href=\"#spanning-multi-valued-relationships\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Ketika anda menyaring sebuah obyek berdasarkan pada sebuah <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> atau membalikkan <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a>, ada dua perbedaan urutan dari penyaringan anda mungkin tertarik. Pertimbangkan hubungan <code class=\"docutils literal notranslate\">Blog</code>/<code class=\"docutils literal notranslate\">Entry</code> (<code class=\"docutils literal notranslate\">Blog</code> pada <code class=\"docutils literal notranslate\">Entry</code> adalah hubungan one-to-many). Kami mungkin tertarik dalam menemukan blog yang memiliki sebuah masukan yang mempunyai kedua <em>&quot;Lennon&quot;</em> dalam judul dan telah diterbitkan di 2008. Atau kami mungkin ingin menemukan blog yang mempunyai sebuah masukan dengan <em>&quot;Lennon&quot;</em> dalam judul sama halnya sebuah masukan yang telah diterbitkan di 2008. Sejak ada banyak masukan terkait dengan <code class=\"docutils literal notranslate\">Blog</code> tunggal, kedua dari permintaan ini adalah memungkinkan dan masuk akal dalam beberapa keadaan</p>\n<p>Jenis keadaan sama muncul dengan <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a>. Sebagai contoh, jika sebuah <code class=\"docutils literal notranslate\">Entry</code> mempunyai <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> disebut <code class=\"docutils literal notranslate\">tags</code>, kami mungkin ingin menemukan masukan terkait ke etiket disebut <em>&quot;music&quot;</em> dan <em>&quot;bands&quot;</em> atau kami mungkin ingin sebuah masukan yang mengandung sebuth etiket dengan nama dari <em>&quot;music&quot;</em> dan status dari <em>&quot;public&quot;</em>.</p>\n<p>Untuk menangani kedua keadan ini, Django mempunyai cari yang cocok dari mengolah panggilan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.filter\" title=\"django.db.models.query.QuerySet.filter\"><code class=\"xref py py-meth docutils literal notranslate\">filter()</code></a>. Apapun didalam panggilan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.filter\" title=\"django.db.models.query.QuerySet.filter\"><code class=\"xref py py-meth docutils literal notranslate\">filter()</code></a> tunggal diberlakukan secara terus menerus untuk menyaring barang-barang mencocokkan semua lingkungan tersebut. Panggilan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.filter\" title=\"django.db.models.query.QuerySet.filter\"><code class=\"xref py py-meth docutils literal notranslate\">filter()</code></a> berturut-turut lebih lanjut membatasi setelan dari obyek, tetapi untuk hubungan banyak-nlai, mereka berlaku ke obyek apapun terkait pada model utama, tidak perlu obyek-obyek itu yang telah dipilih oleh panggilan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.filter\" title=\"django.db.models.query.QuerySet.filter\"><code class=\"xref py py-meth docutils literal notranslate\">filter()</code></a> paling awal.</p>\n<p>Itu mungkin sedikit sedikit membingungkan, jadi semoga sebuah contoh untuk menjelaskan. Untuk memilih semua blog yang mengandungmasukan dengan <em>&quot;Lennon&quot;</em> dalam judul dan telah diterbitkan di 2008 (masukan sama memuaskan kedua keadaan), kami akan menulis:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>entry__headline__contains<span class=\"o\">=</span><span class=\"s1\">&#39;Lennon&#39;</span><span class=\"p\">,</span> entry__pub_date__year<span class=\"o\">=</span><span class=\"mi\">2008</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Untuk memilih semua blog yang mengandung sebuah masukan dengan <em>&quot;Lennon&quot;</em> di judul, <strong>sama halnya</strong> sebuah masukan yang telah diterbitkan di 2008, kami akan menulis:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>entry__headline__contains<span class=\"o\">=</span><span class=\"s1\">&#39;Lennon&#39;</span><span class=\"p\">)</span><span class=\"o\">.</span>filter<span class=\"p\">(</span>entry__pub_date__year<span class=\"o\">=</span><span class=\"mi\">2008</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Sekiranya hanya ada satu blog yang mempunyai kedua masukan mengandung <em>&quot;Lennon&quot;</em> dan masukan dari 2008 tetapi bahwa tidak satupun dari masukan dari 2008 mengandung <em>&quot;Lennon&quot;</em>. Permintaan pertmana tidak akan mengembalikan blog apapun, tetapi kedua permintaan akan mengembalikan itu satu blog.</p>\n<p>Dalam contoh kedua, penyaring pertama membatasi queryset ke semua blog-blog tersebut terkait ke masukan dengan <em>&quot;Lennon&quot;</em> di judul. Penyaring kedua membatasi kumpulan blog <em>further</em> ke itu yang juga terkait ke masukan yang telah diterbirkan di 2008. Masukan dipilih oleh penyaring kedua mungkin atau mungkin tidak sama seperti masukan di penyaring pertama. Kami sedang menyaring barang-barang <code class=\"docutils literal notranslate\">Blog</code> dengan setiap pernyataan penyaring, bukan barang-barang <code class=\"docutils literal notranslate\">Entry</code>.</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Catatan</p>\n<p>Perilaku dari <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.filter\" title=\"django.db.models.query.QuerySet.filter\"><code class=\"xref py py-meth docutils literal notranslate\">filter()</code></a> untuk permintaan yang menjangkau hubungan banyak-nilai, seperti digambarkan diatas, tidak diterapkan setara untuk <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.exclude\" title=\"django.db.models.query.QuerySet.exclude\"><code class=\"xref py py-meth docutils literal notranslate\">exclude()</code></a>. Malahan, keadaan dalam panggilan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.exclude\" title=\"django.db.models.query.QuerySet.exclude\"><code class=\"xref py py-meth docutils literal notranslate\">exclude()</code></a> tunggal tidak akan butuh mengacu ke barang sama.</p>\n<p>Sebagai contoh, permintaan berikut akan tidak menyertakan blog-blog yang mengandung <em>kedua</em> masukan dengan  <em>&quot;Lennon&quot;</em> di judul <em>dan</em> masukan diterbitkan di 2008:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>exclude<span class=\"p\">(</span>\n    entry__headline__contains<span class=\"o\">=</span><span class=\"s1\">&#39;Lennon&#39;</span><span class=\"p\">,</span>\n    entry__pub_date__year<span class=\"o\">=</span><span class=\"mi\">2008</span><span class=\"p\">,</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p>Bagaimanapun, tidak seperti perilaku ketika menggunakan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.filter\" title=\"django.db.models.query.QuerySet.filter\"><code class=\"xref py py-meth docutils literal notranslate\">filter()</code></a>,ini tidak akan membatasi blog-blog berdasarkan pada masukan yang memuaskan kedua keadaan. Untuk melakukan itu, yaitu untuk memilih semua blog yang tidak mengandung masukan diterbitkan dengan <em>&quot;Lennon&quot;</em> yang telah diterbitkan di 2008, anda butuh membuat dua permintaan:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>exclude<span class=\"p\">(</span>\n    entry__in<span class=\"o\">=</span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>\n        headline__contains<span class=\"o\">=</span><span class=\"s1\">&#39;Lennon&#39;</span><span class=\"p\">,</span>\n        pub_date__year<span class=\"o\">=</span><span class=\"mi\">2008</span><span class=\"p\">,</span>\n    <span class=\"p\">),</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n</aside>\n</section>\n</section>\n<section id=\"filters-can-reference-fields-on-the-model\">\n<span id=\"using-f-expressions-in-filters\"></span><h3>Penyaring dapat mengacu bidang pada model<a class=\"heading-anchor\" href=\"#filters-can-reference-fields-on-the-model\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Dalam contoh yang diberikan sejauh ini, kami telah membangun berkas-berkas penyaring yang membandingkan nilai dari bidang model dengan ketetapan. Tetapi apa jika anda ingin membandingkan nilai dai bidang model dengan bidang lain pada model sama?</p>\n<p>Django menyediakan <a class=\"reference internal\" href=\"/id/1.11/ref/models/expressions/#django.db.models.F\" title=\"django.db.models.F\"><code class=\"xref py py-class docutils literal notranslate\">F expressions</code></a> untuk mengizinkan perbandingan. Instance dari <code class=\"docutils literal notranslate\">F()</code> bertindak sebagai sebuah acuan pada model dalam permintaan. Acuan ini kemudian dapat digunakan dalam penyaring permintaan untuk membandingkan nilai-nilai dari dua bidang berbeda pada instance model sama.</p>\n<p>Sebagai contoh, untuk menemukan daftar dari semua masukan blog yang telah mempunyai komentar lebih dari pingback, kami membangun obyek <code class=\"docutils literal notranslate\">F()</code> untuk mengacu jumlah pingback, dan menggunakan obyek <code class=\"docutils literal notranslate\">F()</code> itu dalam permintaan:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><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>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>n_comments__gt<span class=\"o\">=</span>F<span class=\"p\">(</span><span class=\"s1\">&#39;n_pingbacks&#39;</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>Django mendukung penggunaan aritmatika penambahan, pengurangan, perkalian, pembagian modulus, dan power dengan obyek <code class=\"docutils literal notranslate\">F()</code>, kedua dengan ketetapan dan dengan obyek <code class=\"docutils literal notranslate\">F()</code> lain. Untuk menemukan semua masukan blog dengan lebih dari <em>dua kali</em> sebanyak komentar seperti pingback, kami merubah permintaan:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>n_comments__gt<span class=\"o\">=</span>F<span class=\"p\">(</span><span class=\"s1\">&#39;n_pingbacks&#39;</span><span class=\"p\">)</span> <span class=\"o\">*</span> <span class=\"mi\">2</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Untuk menemukan semua masukan dimana penilaian dari masukan sedikit dari penjumlahan hitungan pingback dan hitungan komentar, kami akan menerbitkan permintaan:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>rating__lt<span class=\"o\">=</span>F<span class=\"p\">(</span><span class=\"s1\">&#39;n_comments&#39;</span><span class=\"p\">)</span> <span class=\"o\">+</span> F<span class=\"p\">(</span><span class=\"s1\">&#39;n_pingbacks&#39;</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>Anda dapat juga menggunakan pernyataan garis bawah untuk menjangkau hubungan dalam sebuah obyek <code class=\"docutils literal notranslate\">F()</code>. Sebuah obyek <code class=\"docutils literal notranslate\">F()</code> dengan garis bawah ganda akan memperkenalkan join apapun dibutuhkan untuk mengakses obyek terkait. Sebagai contoh, untuk mengambil semua masukan dimana nama penulis sama seperti nama blog, kami dapat menerbitkan permintaan:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>authors__name<span class=\"o\">=</span>F<span class=\"p\">(</span><span class=\"s1\">&#39;blog__name&#39;</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>Untuk bidang-bidang tanggal dan tanggal/waktu, anda dapat menambah atau mengurangi obyek <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\">timedelta</code></a>. Berikut akan mengembalikan semua masukan yang telah diubah lebih dari 3 hari setelah mereka diterbitkan.</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">datetime</span> <span class=\"kn\">import</span> timedelta\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>mod_date__gt<span class=\"o\">=</span>F<span class=\"p\">(</span><span class=\"s1\">&#39;pub_date&#39;</span><span class=\"p\">)</span> <span class=\"o\">+</span> timedelta<span class=\"p\">(</span>days<span class=\"o\">=</span><span class=\"mi\">3</span><span class=\"p\">))</span>\n</code></pre></div>\n<p>Obyek <code class=\"docutils literal notranslate\">F()</code> mendukung tindakan bitwise dengan .bitand()`, <code class=\"docutils literal notranslate\">.bitor()</code>, <code class=\"docutils literal notranslate\">.bitrightshift()</code>, dan <code class=\"docutils literal notranslate\">.bitleftshift()</code>. Sebagai contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>F<span class=\"p\">(</span><span class=\"s1\">&#39;somefield&#39;</span><span class=\"p\">)</span><span class=\"o\">.</span>bitand<span class=\"p\">(</span><span class=\"mi\">16</span><span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"version-note version-changed\" data-version=\"1.11\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 1.11</p><p>Dukungan untuk <code class=\"docutils literal notranslate\">.bitrightshift()</code> dan <code class=\"docutils literal notranslate\">.bitleftshift()</code> telah ditambahkan.</p>\n</aside>\n</section>\n<section id=\"the-pk-lookup-shortcut\">\n<h3>Jalan pintas pencarian <code class=\"docutils literal notranslate\">pk</code><a class=\"heading-anchor\" href=\"#the-pk-lookup-shortcut\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Untuk kemudahan, Django menyediakan jalan pintas pencarian <code class=\"docutils literal notranslate\">pk</code>, yang berdiri untuk &quot;primary key&quot;.</p>\n<p>Dalam contoh model <code class=\"docutils literal notranslate\">Blog</code>, primary key adalah bidang <code class=\"docutils literal notranslate\">id</code>, jadi pernyataan ini adalah setara:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>id__exact<span class=\"o\">=</span><span class=\"mi\">14</span><span class=\"p\">)</span> <span class=\"c1\"># Explicit form</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">14</span><span class=\"p\">)</span> <span class=\"c1\"># __exact is implied</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>pk<span class=\"o\">=</span><span class=\"mi\">14</span><span class=\"p\">)</span> <span class=\"c1\"># pk implies id__exact</span>\n</code></pre></div>\n<p>Penggunaan <code class=\"docutils literal notranslate\">pk</code> tidak terbatas pada permintaan <code class=\"docutils literal notranslate\">__exact</code> -- apapun istilah permintaan dapat dipadukan dengan <code class=\"docutils literal notranslate\">pk</code> untuk melakukan sebuah permintaan pada primary key pada model:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># Get blogs entries with id 1, 4 and 7</span>\n<span class=\"o\">&gt;&gt;&gt;</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pk__in<span class=\"o\">=</span><span class=\"p\">[</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"mi\">4</span><span class=\"p\">,</span><span class=\"mi\">7</span><span class=\"p\">])</span>\n\n<span class=\"c1\"># Get all blog entries with id &gt; 14</span>\n<span class=\"o\">&gt;&gt;&gt;</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pk__gt<span class=\"o\">=</span><span class=\"mi\">14</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Pencarian <code class=\"docutils literal notranslate\">pk</code> juga bekerja liintas join. Sebagai contoh, tiga pernyataan ini adalah setara:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>blog__id__exact<span class=\"o\">=</span><span class=\"mi\">3</span><span class=\"p\">)</span> <span class=\"c1\"># Explicit form</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>blog__id<span class=\"o\">=</span><span class=\"mi\">3</span><span class=\"p\">)</span>        <span class=\"c1\"># __exact is implied</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>blog__pk<span class=\"o\">=</span><span class=\"mi\">3</span><span class=\"p\">)</span>        <span class=\"c1\"># __pk implies __id__exact</span>\n</code></pre></div>\n</section>\n<section id=\"escaping-percent-signs-and-underscores-in-like-statements\">\n<h3>Meloloskan tanda persen dan garis bawah dalam pernyataan <code class=\"docutils literal notranslate\">LIKE</code><a class=\"heading-anchor\" href=\"#escaping-percent-signs-and-underscores-in-like-statements\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Pencarian bidang yang menyerupai pernyataan SQL <code class=\"docutils literal notranslate\">LIKE</code> (<code class=\"docutils literal notranslate\">iexact</code>, <code class=\"docutils literal notranslate\">contains</code>, <code class=\"docutils literal notranslate\">icontains</code>, <code class=\"docutils literal notranslate\">startswith</code>, <code class=\"docutils literal notranslate\">istartswith</code>, <code class=\"docutils literal notranslate\">endswith</code> dan <code class=\"docutils literal notranslate\">iendswith</code>) akan otomatis meloloskan dua karakter khusus digunakan dalam pernyataan <code class=\"docutils literal notranslate\">LIKE</code> -- tanda persen dan garis bawah. (Dalam sebuah pernyataan <code class=\"docutils literal notranslate\">Like</code>, tanda persen menandakan wildcard banyak-karakter dan garis bawah menandakan wildcard karakter-tunggal.)</p>\n<p>Ini berarti hal-hal harus bekerja secara intuitif, jadi abstraksi tidak bocor. Sebagai contoh, untuk mengambil semua masukan yang mengandung tanda persen, cukup gunakan tanda persen sebagai katakter lain:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>headline__contains<span class=\"o\">=</span><span class=\"s1\">&#39;%&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Django menangani dari pengutipan untuk anda; menghasilkan SQL akan mencari sesuatu seperti ini:</p>\n<div class=\"code-block\" data-language=\"sql\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">SQL</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"SQL code\"><code><span class=\"k\">SELECT</span> <span class=\"p\">...</span> <span class=\"k\">WHERE</span> headline <span class=\"k\">LIKE</span> <span class=\"s1\">&#39;%\\%%&#39;</span><span class=\"p\">;</span>\n</code></pre></div>\n<p>Sama seperti garis bawah. Kedua tanda persen dan garis bawag ditangani untuk anda secara transparan.</p>\n</section>\n<section id=\"caching-and-querysets\">\n<span id=\"id7\"></span><h3>Cache dan <code class=\"docutils literal notranslate\">QuerySet</code><a class=\"heading-anchor\" href=\"#caching-and-querysets\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Setiap <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> mengandung sebuah tembolok untuk meminimalkan akses basisdata. Pahami bagaimana dia bekerja akan mengizinkan anda menulis kode paling efisien.</p>\n<p>Dalam <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> baru dibuat, cache kosong. Pertama kali sebuah <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> dinilai -- dan, karena itu, sebuah permintaan basisdata terjadi -- Django menyimpan hasil permintaan dalam cache <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> dan mengembalikan hasil yang telah secara jelas diminta (sebagai contoh, unsur selanjutnya, jika ada <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> sedang diulang). Penilaian selanjutnya dari <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> menggunakan hasil ter cache.</p>\n<p>Jaga perilaku cache ini dalam pikiran, karena itu mungkin mengigit anda jika anda tidak menggunakan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> anda dengan benar. Sebagai contoh, berikut akan membuat dua <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a>, nilai mereka, dan lemparkan mereka:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">([</span>e<span class=\"o\">.</span>headline <span class=\"k\">for</span> e <span class=\"ow\">in</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()])</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">([</span>e<span class=\"o\">.</span>pub_date <span class=\"k\">for</span> e <span class=\"ow\">in</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()])</span>\n</code></pre></div>\n<p>Itu berarti permintaan absisdata sama akan dijalankan dua kali, berhasil menggandakan muatan basisdata anda. Juga, ada kemungkinan dua daftar mungkin tidak meneyrtakan rekaman basisdata sama, karena <code class=\"docutils literal notranslate\">Entry</code> telah ditambahkan atau dihapus dalam pembagian kedua diantara dua permintaan.</p>\n<p>Untuk menghindari masalah ini, cukup simpan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> dan gunakan kembali</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>queryset <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">([</span>p<span class=\"o\">.</span>headline <span class=\"k\">for</span> p <span class=\"ow\">in</span> queryset<span class=\"p\">])</span> <span class=\"c1\"># Evaluate the query set.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">([</span>p<span class=\"o\">.</span>pub_date <span class=\"k\">for</span> p <span class=\"ow\">in</span> queryset<span class=\"p\">])</span> <span class=\"c1\"># Re-use the cache from the evaluation.</span>\n</code></pre></div>\n<section id=\"when-querysets-are-not-cached\">\n<h4>Ketika <code class=\"docutils literal notranslate\">QuerySet</code> tidak di cache<a class=\"heading-anchor\" href=\"#when-querysets-are-not-cached\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Queryset tidak selalu cache hasil mereka. Ketika menilai hanya <em>bagian</em> dari queryset, cache diperiksa, tetapi jika tidak dikumpulkan kemudian barang-barang dikembalikan oleh permintaan selanjutnya tidak di cache. Secara khusus, ini berarti bahwa <span class=\"xref std std-ref\">limiting the queryset 1</span> menggunakan potongan senarai atau sebuah indeks tidak akan dikumpulkan cache.</p>\n<p>Sebagi contoh, secara berulang mendapatkan indeks tertentu di queryset obyek akan meminta basisdata setiap waktu:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>queryset <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>queryset<span class=\"p\">[</span><span class=\"mi\">5</span><span class=\"p\">])</span> <span class=\"c1\"># Queries the database</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>queryset<span class=\"p\">[</span><span class=\"mi\">5</span><span class=\"p\">])</span> <span class=\"c1\"># Queries the database again</span>\n</code></pre></div>\n<p>Bagaimanapun, jika keseluruhan queryset sudah dinilai, tembolok akan diperiksa sebagai gantinya:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>queryset <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"p\">[</span>entry <span class=\"k\">for</span> entry <span class=\"ow\">in</span> queryset<span class=\"p\">]</span> <span class=\"c1\"># Queries the database</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>queryset<span class=\"p\">[</span><span class=\"mi\">5</span><span class=\"p\">])</span> <span class=\"c1\"># Uses cache</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>queryset<span class=\"p\">[</span><span class=\"mi\">5</span><span class=\"p\">])</span> <span class=\"c1\"># Uses cache</span>\n</code></pre></div>\n<p>Ini adalah beberapa contoh dari tindakan lain yang akan menghasilkan keseluruhan queryset yang sedang dinilai dan karena itu dikumpulkan tembolok:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"p\">[</span>entry <span class=\"k\">for</span> entry <span class=\"ow\">in</span> queryset<span class=\"p\">]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">bool</span><span class=\"p\">(</span>queryset<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>entry <span class=\"ow\">in</span> queryset\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">list</span><span class=\"p\">(</span>queryset<span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Catatan</p>\n<p>Mencetak sederhana queryset tidak akan mengumpulkan tembolok. Ini dikarenakan panggilan pada <code class=\"docutils literal notranslate\">__repr__()</code> hanya mengembalikan potongan dari keseluruhan queryset.</p>\n</aside>\n</section>\n</section>\n</section>\n<section id=\"complex-lookups-with-q-objects\">\n<span id=\"complex-lookups-with-q\"></span><h2>Pencarian rumit dengan obyek <code class=\"docutils literal notranslate\">Q</code><a class=\"heading-anchor\" href=\"#complex-lookups-with-q-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Permintaan argumen katakunci -- dalam <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.filter\" title=\"django.db.models.query.QuerySet.filter\"><code class=\"xref py py-meth docutils literal notranslate\">filter()</code></a>, dll. -- adalah &quot;AND&quot; bersama-sama. Jika anda buth menjalankan permintaan lebih rumit (sebagai contoh, permintaan dengan pernyataan <code class=\"docutils literal notranslate\">OR</code>), anda dapat menggunakan <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.Q\" title=\"django.db.models.Q\"><code class=\"xref py py-class docutils literal notranslate\">Q objects</code></a>.</p>\n<p><a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.Q\" title=\"django.db.models.Q\"><code class=\"xref py py-class docutils literal notranslate\">Q object</code></a> (<code class=\"docutils literal notranslate\">django.db.models.Q</code>) adalah sebuah obyek digunakan untuk membungkus koleksi dari argumen katakunci. Argumen katakunci ini ditentukan seperti dalam &quot;Pencarian bidang&quot; diatas.</p>\n<p>Sebagai contoh, obyek <code class=\"docutils literal notranslate\">Q</code> ini membungkus permintaan <code class=\"docutils literal notranslate\">LIKE</code> tunggal:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> Q\nQ<span class=\"p\">(</span>question__startswith<span class=\"o\">=</span><span class=\"s1\">&#39;What&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Obyek <code class=\"docutils literal notranslate\">Q</code> dapat dipadukan menggunakan penghubung <code class=\"docutils literal notranslate\">&amp;</code> dan <code class=\"docutils literal notranslate\">|</code>. Ketika sebuah penghubung digunakan pada dua obyek <code class=\"docutils literal notranslate\">Q</code>, itu menghasilkan obyek <code class=\"docutils literal notranslate\">Q</code> baru.</p>\n<p>Sebagai contoh, pernyataan ini menghasilkan obyek <code class=\"docutils literal notranslate\">Q</code> tunggal yang mewakili &quot;OR&quot; atau dua permintaan <code class=\"docutils literal notranslate\">&quot;question__startswith&quot;</code></p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Q<span class=\"p\">(</span>question__startswith<span class=\"o\">=</span><span class=\"s1\">&#39;Who&#39;</span><span class=\"p\">)</span> <span class=\"o\">|</span> Q<span class=\"p\">(</span>question__startswith<span class=\"o\">=</span><span class=\"s1\">&#39;What&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Ini sama pada klausa SQL <code class=\"docutils literal notranslate\">WHERE</code> berikut:</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>WHERE question LIKE <span class=\"s1\">&#39;Who%&#39;</span> OR question LIKE <span class=\"s1\">&#39;What%&#39;</span>\n</code></pre></div>\n<p>Anda dapat menyusun pernyataan dari kerumitan yang berubah-ubah dengan memadukan obyek <code class=\"docutils literal notranslate\">Q</code> dengan penghubung <code class=\"docutils literal notranslate\">&amp;</code> and <code class=\"docutils literal notranslate\">|</code> dan gunakan pengelompokan yang disipkan. Juga, obyek <code class=\"docutils literal notranslate\">Q</code> dapat ditugaskan menggunakan penghubung <code class=\"docutils literal notranslate\">~</code>, mengizinkan perpaduan pencarian yang memadukan kedua permintaan normal dan meniadakan permintaan (<code class=\"docutils literal notranslate\">NOT</code>):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Q<span class=\"p\">(</span>question__startswith<span class=\"o\">=</span><span class=\"s1\">&#39;Who&#39;</span><span class=\"p\">)</span> <span class=\"o\">|</span> <span class=\"o\">~</span>Q<span class=\"p\">(</span>pub_date__year<span class=\"o\">=</span><span class=\"mi\">2005</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Setiap fungsi pencarian yang mengambil argumen-kata kunci (sebagai contoh <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.filter\" title=\"django.db.models.query.QuerySet.filter\"><code class=\"xref py py-meth docutils literal notranslate\">filter()</code></a>, <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.exclude\" title=\"django.db.models.query.QuerySet.exclude\"><code class=\"xref py py-meth docutils literal notranslate\">exclude()</code></a>, <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.get\" title=\"django.db.models.query.QuerySet.get\"><code class=\"xref py py-meth docutils literal notranslate\">get()</code></a>) dapat juga melewatkan satu atau lebih obyek <code class=\"docutils literal notranslate\">Q</code> sebagai argumen (tidak-dinamai) kedudukan. Jika anda menyediakan banyak argumen obyek <code class=\"docutils literal notranslate\">Q</code> pada fungsi pencarian, argumen akan di &quot;AND&quot;kan bersama-sama. Sebagai contoh:</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>Poll<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>\n    Q<span class=\"p\">(</span>question__startswith<span class=\"o\">=</span><span class=\"s1\">&#39;Who&#39;</span><span class=\"p\">),</span>\n    Q<span class=\"p\">(</span>pub_date<span class=\"o\">=</span>date<span class=\"p\">(</span><span class=\"mi\">2005</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">))</span> <span class=\"o\">|</span> Q<span class=\"p\">(</span>pub_date<span class=\"o\">=</span>date<span class=\"p\">(</span><span class=\"mi\">2005</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">6</span><span class=\"p\">))</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p>... kurang lebih menterjemahkan ke dalam SQL:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>SELECT <span class=\"o\">*</span> <span class=\"kn\">from</span> <span class=\"nn\">polls</span> WHERE question LIKE <span class=\"s1\">&#39;Who%&#39;</span>\n    AND <span class=\"p\">(</span>pub_date <span class=\"o\">=</span> <span class=\"s1\">&#39;2005-05-02&#39;</span> OR pub_date <span class=\"o\">=</span> <span class=\"s1\">&#39;2005-05-06&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Fungsi pencarian dapat mencampurkan penggunaan obyek <code class=\"docutils literal notranslate\">Q</code> dan argumen kata kunci. Semua argumen disediakan untuk fungsi pencarian (menjadi mereka argumen kata kunci atau obyek <code class=\"docutils literal notranslate\">Q</code>) di &quot;AND&quot;kan bersama-sama. Bagaimanapun, jika obyek <code class=\"docutils literal notranslate\">Q</code> disediakan, dia harus mendahului pengertian dari argumen kata kunci apapun. Sebagai contoh:</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>Poll<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>\n    Q<span class=\"p\">(</span>pub_date<span class=\"o\">=</span>date<span class=\"p\">(</span><span class=\"mi\">2005</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">))</span> <span class=\"o\">|</span> Q<span class=\"p\">(</span>pub_date<span class=\"o\">=</span>date<span class=\"p\">(</span><span class=\"mi\">2005</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">6</span><span class=\"p\">)),</span>\n    question__startswith<span class=\"o\">=</span><span class=\"s1\">&#39;Who&#39;</span><span class=\"p\">,</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p>... akan menjadi permintaan sah, sama pada contoh sebelumnya; tetapi:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># INVALID QUERY</span>\nPoll<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>\n    question__startswith<span class=\"o\">=</span><span class=\"s1\">&#39;Who&#39;</span><span class=\"p\">,</span>\n    Q<span class=\"p\">(</span>pub_date<span class=\"o\">=</span>date<span class=\"p\">(</span><span class=\"mi\">2005</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">))</span> <span class=\"o\">|</span> Q<span class=\"p\">(</span>pub_date<span class=\"o\">=</span>date<span class=\"p\">(</span><span class=\"mi\">2005</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"mi\">6</span><span class=\"p\">))</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p>... tidak akan menjadi sah.</p>\n<aside class=\"admonition admonition-seealso\" role=\"note\">\n<p class=\"admonition-title\">Lihat juga</p>\n<p><a class=\"reference external\" href=\"https://github.com/django/django/blob/master/tests/or_lookups/tests.py\">OR lookups examples</a> dalam satuan percobaan Django menampilkan beberapa kemungkinan penggunaan dari <code class=\"docutils literal notranslate\">Q</code>.</p>\n</aside>\n</section>\n<section id=\"comparing-objects\">\n<h2>Membandingkan obyek<a class=\"heading-anchor\" href=\"#comparing-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Untuk membandingkan dua model instance, cukup gunakan penghubung perbandingan standar Python, tanda sama dengan ganda: <code class=\"docutils literal notranslate\">==</code>. Dibelakang layar, yang membandingkan nilai primary key dari dua model.</p>\n<p>Menggunakan contoh <code class=\"docutils literal notranslate\">Entry</code> diatas, dua pernyataan berikut adalah setara:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>some_entry <span class=\"o\">==</span> other_entry\n<span class=\"gp\">&gt;&gt;&gt; </span>some_entry<span class=\"o\">.</span>id <span class=\"o\">==</span> other_entry<span class=\"o\">.</span>id\n</code></pre></div>\n<p>Jika sebuah primary key model tidak memanggil <code class=\"docutils literal notranslate\">id</code>, tidak masalah. Perbandingan akan selalu menggunakan primary key, apapun itu memanggilnya. Sebagai contoh, jika sebuah primary key model dipanggil <code class=\"docutils literal notranslate\">name</code>, dua pernyataan ini adalah setara:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>some_obj <span class=\"o\">==</span> other_obj\n<span class=\"gp\">&gt;&gt;&gt; </span>some_obj<span class=\"o\">.</span>name <span class=\"o\">==</span> other_obj<span class=\"o\">.</span>name\n</code></pre></div>\n</section>\n<section id=\"deleting-objects\">\n<span id=\"topics-db-queries-delete\"></span><h2>menghapus obyek<a class=\"heading-anchor\" href=\"#deleting-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Untuk menghapus metode, mudah, adalah bernama <a class=\"reference internal\" href=\"/id/1.11/ref/models/instances/#django.db.models.Model.delete\" title=\"django.db.models.Model.delete\"><code class=\"xref py py-meth docutils literal notranslate\">delete()</code></a>. Metode ini segera menghapus obyek dan mengembalikan sejumlah obyek yang dihapus dan sebuah kamus dengan sejumlah penghapusan per jenis obyek. Contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>e<span class=\"o\">.</span>delete<span class=\"p\">()</span>\n<span class=\"go\">(1, {&#39;weblog.Entry&#39;: 1})</span>\n</code></pre></div>\n<p>Anda dapat juga menghapus obyek dalam jumlah besar. Setiap <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> mempunyai sebuah <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.delete\" title=\"django.db.models.query.QuerySet.delete\"><code class=\"xref py py-meth docutils literal notranslate\">delete()</code></a> method, yang menghapus semua anggota dari <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> tersebut.</p>\n<p>Sebagai contoh, ini menghapus semua obyek <code class=\"docutils literal notranslate\">Entry</code> dengan tahun <code class=\"docutils literal notranslate\">pub-date</code> dari 2005:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__year<span class=\"o\">=</span><span class=\"mi\">2005</span><span class=\"p\">)</span><span class=\"o\">.</span>delete<span class=\"p\">()</span>\n<span class=\"go\">(5, {&#39;webapp.Entry&#39;: 5})</span>\n</code></pre></div>\n<p>Ingat bahwa ini akan, ketika memungkinkan, akan dijalankan murni dalam SQL, dan juga cara <code class=\"docutils literal notranslate\">delete()</code> dari instance tidak akan perlu dipanggil selama pengolahan. Jika anda telah menyediakan cara <code class=\"docutils literal notranslate\">delete()</code> disesuaikan pada sebuah kelas model dan ingin memastikan bahwa dia dipanggil, anda akan butuh &quot;secara manual&quot; menghapus instance dari model tersebut (sebagai contoh, dengan perulangan terhadap <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> dan memanggil <code class=\"docutils literal notranslate\">delete()</code> pada setiap obyek secara tersendiri) daripada menggunakan dalam jumlah besar cara <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.delete\" title=\"django.db.models.query.QuerySet.delete\"><code class=\"xref py py-meth docutils literal notranslate\">delete()</code></a> dari sebuah <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a>.</p>\n<p>Ketika DJANGO menghapus sebuah obyek, secara awal dia meniru kebiasaan batasan SQL <code class=\"docutils literal notranslate\">ON DELETE CASCADE</code> -- dalam kata lain, obyek apapun yang mempunyai foreign key menunjuk pada obyek yang akan dihapus akan dihapus bersama dengannya. Sebagai contoh:</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>b <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>pk<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"c1\"># This will delete the Blog and all of its Entry objects.</span>\nb<span class=\"o\">.</span>delete<span class=\"p\">()</span>\n</code></pre></div>\n<p>Kebiasaan turunan ini dapat di sesuaikan melalui argumen <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ForeignKey.on_delete\" title=\"django.db.models.ForeignKey.on_delete\"><code class=\"xref py py-attr docutils literal notranslate\">on_delete</code></a> ke <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a>.</p>\n<p>Catat bahwa <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.delete\" title=\"django.db.models.query.QuerySet.delete\"><code class=\"xref py py-meth docutils literal notranslate\">delete()</code></a> adalah hanya cara <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> yang tidak ditunjukkan pada <a class=\"reference internal\" href=\"/id/1.11/topics/db/managers/#django.db.models.Manager\" title=\"django.db.models.Manager\"><code class=\"xref py py-class docutils literal notranslate\">Manager</code></a> itu sendiri. Ini adalah mekanisme aman untuk mencegah anda dari kecelakaan permintaan <code class=\"docutils literal notranslate\">Entry.objects.delete()</code>, dan menghapus <em>semua</em> masukan. Jika anda ingin <em>melakukan</em> menghapus semua obyek, kemudian anda harus secara jelas meminta kumpulan permintaan lengkap:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()</span><span class=\"o\">.</span>delete<span class=\"p\">()</span>\n</code></pre></div>\n</section>\n<section id=\"copying-model-instances\">\n<span id=\"topics-db-queries-copy\"></span><h2>Menyalin instance model<a class=\"heading-anchor\" href=\"#copying-model-instances\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Meskipun tidak ada metode siap-pakai untuk menyalin instance model, itu memungkinkan untuk dengan mudah membuat instance baru dengan semua nilai-nilai bidang disalin. Dalam kasus termudah, anda dapat cukup menyetel <code class=\"docutils literal notranslate\">pk</code> menjadi <code class=\"docutils literal notranslate\">None</code>. Menggunakan contoh blog kami:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>blog <span class=\"o\">=</span> Blog<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s1\">&#39;My blog&#39;</span><span class=\"p\">,</span> tagline<span class=\"o\">=</span><span class=\"s1\">&#39;Blogging is easy&#39;</span><span class=\"p\">)</span>\nblog<span class=\"o\">.</span>save<span class=\"p\">()</span> <span class=\"c1\"># blog.pk == 1</span>\n\nblog<span class=\"o\">.</span>pk <span class=\"o\">=</span> <span class=\"kc\">None</span>\nblog<span class=\"o\">.</span>save<span class=\"p\">()</span> <span class=\"c1\"># blog.pk == 2</span>\n</code></pre></div>\n<p>Hal-hal dapat lebih rumit jika anda menggunakan warisan. Pertimbangkan subkelas dari <code class=\"docutils literal notranslate\">Blog</code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span> <span class=\"nc\">ThemeBlog</span><span class=\"p\">(</span>Blog<span class=\"p\">):</span>\n    theme <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">200</span><span class=\"p\">)</span>\n\ndjango_blog <span class=\"o\">=</span> ThemeBlog<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s1\">&#39;Django&#39;</span><span class=\"p\">,</span> tagline<span class=\"o\">=</span><span class=\"s1\">&#39;Django is easy&#39;</span><span class=\"p\">,</span> theme<span class=\"o\">=</span><span class=\"s1\">&#39;python&#39;</span><span class=\"p\">)</span>\ndjango_blog<span class=\"o\">.</span>save<span class=\"p\">()</span> <span class=\"c1\"># django_blog.pk == 3</span>\n</code></pre></div>\n<p>Disebabkan oleh bagaimana warisan bekerja, anda harus menyetel kedua <code class=\"docutils literal notranslate\">pk</code> dan <code class=\"docutils literal notranslate\">id</code> menjadi None:</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>django_blog<span class=\"o\">.</span>pk <span class=\"o\">=</span> <span class=\"kc\">None</span>\ndjango_blog<span class=\"o\">.</span>id <span class=\"o\">=</span> <span class=\"kc\">None</span>\ndjango_blog<span class=\"o\">.</span>save<span class=\"p\">()</span> <span class=\"c1\"># django_blog.pk == 4</span>\n</code></pre></div>\n<p>Pengolahan ini tidak menyalin hubungan yang bukan bagian dari tabel basisdata model. Sebagai contoh, <code class=\"docutils literal notranslate\">Entry</code> mempunyai <code class=\"docutils literal notranslate\">ManyToManyField</code> terhadap <code class=\"docutils literal notranslate\">Author</code>. Setelah menggandakan sebuah masukan, anda harus menyetel hubungan many-to-many untuk masukan baru:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>entry <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()[</span><span class=\"mi\">0</span><span class=\"p\">]</span> <span class=\"c1\"># some previous entry</span>\nold_authors <span class=\"o\">=</span> entry<span class=\"o\">.</span>authors<span class=\"o\">.</span>all<span class=\"p\">()</span>\nentry<span class=\"o\">.</span>pk <span class=\"o\">=</span> <span class=\"kc\">None</span>\nentry<span class=\"o\">.</span>save<span class=\"p\">()</span>\nentry<span class=\"o\">.</span>authors<span class=\"o\">.</span>set<span class=\"p\">(</span>old_authors<span class=\"p\">)</span>\n</code></pre></div>\n<p>Untuk <code class=\"docutils literal notranslate\">OneToOneField</code>, anda harus menggandakan obyek terkait dan memberikan itu ke bidang obyek baru untuk menghindari melanggar batasan untuk one-to-one. Sebagai contoh, menganggap <code class=\"docutils literal notranslate\">entry</code> sudah digandakan seperti diatas:</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>detail <span class=\"o\">=</span> EntryDetail<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()[</span><span class=\"mi\">0</span><span class=\"p\">]</span>\ndetail<span class=\"o\">.</span>pk <span class=\"o\">=</span> <span class=\"kc\">None</span>\ndetail<span class=\"o\">.</span>entry <span class=\"o\">=</span> entry\ndetail<span class=\"o\">.</span>save<span class=\"p\">()</span>\n</code></pre></div>\n</section>\n<section id=\"updating-multiple-objects-at-once\">\n<span id=\"topics-db-queries-update\"></span><h2>Memperbaharui banyak obyek sekaligus<a class=\"heading-anchor\" href=\"#updating-multiple-objects-at-once\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Terkadang anda ingin menyetel sebuah bidang ke nilai tertentu untuk semua obyek dalam <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a>. Anda dapat melakukan ini dengan cara <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.update\" title=\"django.db.models.query.QuerySet.update\"><code class=\"xref py py-meth docutils literal notranslate\">update()</code></a>. Sebagai contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># Update all the headlines with pub_date in 2007.</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>pub_date__year<span class=\"o\">=</span><span class=\"mi\">2007</span><span class=\"p\">)</span><span class=\"o\">.</span>update<span class=\"p\">(</span>headline<span class=\"o\">=</span><span class=\"s1\">&#39;Everything is the same&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Anda dapat hanya menyetel bidang-bidang bukan-hubungan dan bidang-bidang <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> menggunakan metode ini. Untuk memperbaharui bidang-bidang <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a>, setel nilai baru ke instance model baru anda ingin tunjuk. Sebagai contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>b <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>pk<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n\n<span class=\"go\"># Change every Entry so that it belongs to this Blog.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()</span><span class=\"o\">.</span>update<span class=\"p\">(</span>blog<span class=\"o\">=</span>b<span class=\"p\">)</span>\n</code></pre></div>\n<p>Metode <code class=\"docutils literal notranslate\">update()</code> diberlakukan segera dan mengembalikan sejumlah baris cocok oleh permintaan (yang mungkin tidak setara pada sejumlah baris diperbaharui jika baris sudah mempunyai nilai baru). Hanya batasan pada <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> sedang diperbaharui adalah itu dapat hanya diakses pada tabel basisdata: tabel utama model. Anda dapat menyaring pada bidang-bidang terkait, tetapi anda dapat hanya memperbaharui kolom dalam tabel utama model. Contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>b <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>pk<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n\n<span class=\"go\"># Update all the headlines belonging to this Blog.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>select_related<span class=\"p\">()</span><span class=\"o\">.</span>filter<span class=\"p\">(</span>blog<span class=\"o\">=</span>b<span class=\"p\">)</span><span class=\"o\">.</span>update<span class=\"p\">(</span>headline<span class=\"o\">=</span><span class=\"s1\">&#39;Everything is the same&#39;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Waspada bahwa metode <code class=\"docutils literal notranslate\">update()</code> dirubah secara langsung ke sebuah pernyataan SQL. Itu adalah tindakan pengumpulan untuk pembaharuan langsung. Itu tidak menjalankan metode <a class=\"reference internal\" href=\"/id/1.11/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a> apapun pada model-model anda, atau mengeluarkan sinyal <code class=\"docutils literal notranslate\">pre_save</code> atau <code class=\"docutils literal notranslate\">post_save</code> (yang akibat dari memanggil <a class=\"reference internal\" href=\"/id/1.11/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a>), atau menerima pilihan bidang <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.DateField.auto_now\" title=\"django.db.models.DateField.auto_now\"><code class=\"xref py py-attr docutils literal notranslate\">auto_now</code></a>. Jika anda ingin mentimpan setiap barang dalam <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> dan pastikan bahwa metode  <a class=\"reference internal\" href=\"/id/1.11/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a> dipanggil pada setiap instance, anda tidak butuh fungsi khusus apapun untuk mengangani itu. Cukup putarkan terhadap mereka dan panggil <a class=\"reference internal\" href=\"/id/1.11/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">for</span> item <span class=\"ow\">in</span> my_queryset<span class=\"p\">:</span>\n    item<span class=\"o\">.</span>save<span class=\"p\">()</span>\n</code></pre></div>\n<p>Panggilan untuk memperbaharui juga menggunakan <a class=\"reference internal\" href=\"/id/1.11/ref/models/expressions/#django.db.models.F\" title=\"django.db.models.F\"><code class=\"xref py py-class docutils literal notranslate\">F expressions</code></a> untuk memperbaharui satu bidang berdasarkan pada nilai dari bidang lain dalam model. Ini adalah khususnya berguna untuk meningkatkan hitungan berdasarkan pada nilai saat ini mereka. Sebagai contoh, untuk menaikkan hitungan pingback untuk setiap masukan dalam blog:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()</span><span class=\"o\">.</span>update<span class=\"p\">(</span>n_pingbacks<span class=\"o\">=</span>F<span class=\"p\">(</span><span class=\"s1\">&#39;n_pingbacks&#39;</span><span class=\"p\">)</span> <span class=\"o\">+</span> <span class=\"mi\">1</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Bagaimanapun, tidak seperti obyek <code class=\"docutils literal notranslate\">F()</code> dalam penyaringan dan tidak menyertakan klausa-klausa, anda tidak dapat memperkenalkan penggabungan ketika anda menggunakan obyek <code class=\"docutils literal notranslate\">F()</code> dalam sebuah pembaharuan -- anda hanya dapat mengacu bidang-bidang lokal ke model sedang diperbaharui. Jika anda berusaha memperkenalkan penggabungan dengan sebuah obyek <code class=\"docutils literal notranslate\">F()</code>, sebuah <code class=\"docutils literal notranslate\">FieldError</code> akan dimunculkan:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># This will raise a FieldError</span>\n<span class=\"o\">&gt;&gt;&gt;</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>update<span class=\"p\">(</span>headline<span class=\"o\">=</span>F<span class=\"p\">(</span><span class=\"s1\">&#39;blog__name&#39;</span><span class=\"p\">))</span>\n</code></pre></div>\n</section>\n<section id=\"related-objects\">\n<span id=\"topics-db-queries-related\"></span><h2>Obyek terkait<a class=\"heading-anchor\" href=\"#related-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Ketika anda menentukan hubungan dalam sebuah model (yaitu, sebuah <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a>, <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.OneToOneField\" title=\"django.db.models.OneToOneField\"><code class=\"xref py py-class docutils literal notranslate\">OneToOneField</code></a>, atau <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a>), instance-instance dari model itu akan mempunyai API cocok untuk mengakses obyek terkait.</p>\n<p>Menggunakan model-model diatas dari halaman ini, sebagai contoh, sebuah obyek <code class=\"docutils literal notranslate\">Entry</code> <code class=\"docutils literal notranslate\">c</code> dapat mendapatkan obyek <code class=\"docutils literal notranslate\">Blog</code> berhubungan dengan mengakses atribut <code class=\"docutils literal notranslate\">blog</code>: <code class=\"docutils literal notranslate\">e.blog</code>.</p>\n<p>(Dibelakang layar, kegunaan ini diterapkan oleh <a class=\"reference external\" href=\"https://docs.python.org/3/howto/descriptor.html\">descriptors</a> Python. Ini tidak tidak masalah buat anda, tetapi kami menunjuk disini untuk keganjilan.)</p>\n<p>Django juga membuat pengakses API untuk sisi &quot;lain&quot; dari hubungan -- tautan dari model terkait ke model yang menentukan hubungan. Sebagai contoh, obyek <code class=\"docutils literal notranslate\">Blog</code> <code class=\"docutils literal notranslate\">b</code> mempunyai akses ke daftar dari semua obyek <code class=\"docutils literal notranslate\">Entry</code> terkait melalui atribut <code class=\"docutils literal notranslate\">entry_set</code>: <code class=\"docutils literal notranslate\">b.entry_set.all()</code>.</p>\n<p>Semua contoh dalam bagian ini menggunakan contoh model <code class=\"docutils literal notranslate\">Blog</code>, <code class=\"docutils literal notranslate\">Author</code> and <code class=\"docutils literal notranslate\">Entry</code> ditentukan pada atas dari halaman ini.</p>\n<section id=\"one-to-many-relationships\">\n<h3>Hubungan satu-ke-banyak<a class=\"heading-anchor\" href=\"#one-to-many-relationships\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"forward\">\n<h4>Meneruskan<a class=\"heading-anchor\" href=\"#forward\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Jika sebuah model mempunyai <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a>, instance dari model tersebut akan mempunyai akses ke obyek (asing) terkait melalui atribut sederhana dari model.</p>\n<p>Contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>e <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>e<span class=\"o\">.</span>blog <span class=\"c1\"># Returns the related Blog object.</span>\n</code></pre></div>\n<p>Anda daat mendapatkan dan menyetel melalui atribut foreign-key. Seperti anda mungkin harapkan, perubahan pada foreign key tidak disimpan ke basisdata sampai anda memanggil  <a class=\"reference internal\" href=\"/id/1.11/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a>. Contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>e <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>e<span class=\"o\">.</span>blog <span class=\"o\">=</span> some_blog\n<span class=\"gp\">&gt;&gt;&gt; </span>e<span class=\"o\">.</span>save<span class=\"p\">()</span>\n</code></pre></div>\n<p>Jika sebuah bidang <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> mempunyai <code class=\"docutils literal notranslate\">null=True</code> disetel (yaitu nilai <code class=\"docutils literal notranslate\">NULL</code>), anda dapat memberikan <code class=\"docutils literal notranslate\">None</code> untuk memindahkan hubungan. Contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>e <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>e<span class=\"o\">.</span>blog <span class=\"o\">=</span> <span class=\"kc\">None</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>e<span class=\"o\">.</span>save<span class=\"p\">()</span> <span class=\"c1\"># &quot;UPDATE blog_entry SET blog_id = NULL ...;&quot;</span>\n</code></pre></div>\n<p>Akses mengirimkan ke hubungan one-to-many disimpan sementara pada kali pertama obyek terkait diakses. Akses selanjutnya ke foreign key pada instance obyek sama disimpan sementara. Contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>e <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>e<span class=\"o\">.</span>blog<span class=\"p\">)</span>  <span class=\"c1\"># Hits the database to retrieve the associated Blog.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>e<span class=\"o\">.</span>blog<span class=\"p\">)</span>  <span class=\"c1\"># Doesn&#39;t hit the database; uses cached version.</span>\n</code></pre></div>\n<p>Catat bahwa <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet.select_related\" title=\"django.db.models.query.QuerySet.select_related\"><code class=\"xref py py-meth docutils literal notranslate\">select_related()</code></a> metode <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> berulang mengisi dimuka cache dari semua hubungan one-to-many sebelumnya. Contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>e <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>select_related<span class=\"p\">()</span><span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>e<span class=\"o\">.</span>blog<span class=\"p\">)</span>  <span class=\"c1\"># Doesn&#39;t hit the database; uses cached version.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">print</span><span class=\"p\">(</span>e<span class=\"o\">.</span>blog<span class=\"p\">)</span>  <span class=\"c1\"># Doesn&#39;t hit the database; uses cached version.</span>\n</code></pre></div>\n</section>\n<section id=\"following-relationships-backward\">\n<span id=\"backwards-related-objects\"></span><h4>Mengikuti hubungan &quot;&quot;ke belakang&quot;<a class=\"heading-anchor\" href=\"#following-relationships-backward\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Jika model mempunyai <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a>, instance-instance dari model foreign-key akan mempunyai akses ke <a class=\"reference internal\" href=\"/id/1.11/topics/db/managers/#django.db.models.Manager\" title=\"django.db.models.Manager\"><code class=\"xref py py-class docutils literal notranslate\">Manager</code></a> yang mengembalikan semua instance dari model pertama. Secara awalan, <a class=\"reference internal\" href=\"/id/1.11/topics/db/managers/#django.db.models.Manager\" title=\"django.db.models.Manager\"><code class=\"xref py py-class docutils literal notranslate\">Manager</code></a> ini dinamai <code class=\"docutils literal notranslate\">FOO_set</code>, dimana <code class=\"docutils literal notranslate\">FOO</code> adalah nama model sumber, huruf kecil. <a class=\"reference internal\" href=\"/id/1.11/topics/db/managers/#django.db.models.Manager\" title=\"django.db.models.Manager\"><code class=\"xref py py-class docutils literal notranslate\">Manager</code></a> ini mengembalikan <code class=\"docutils literal notranslate\">QuerySets</code>, yang dapat disaring dan dirubah seperti digambarkan dalam bagian &quot;Mengambil obyek&quot; diatas.</p>\n<p>Contoh:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>b <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>b<span class=\"o\">.</span>entry_set<span class=\"o\">.</span>all<span class=\"p\">()</span> <span class=\"c1\"># Returns all Entry objects related to Blog.</span>\n\n<span class=\"go\"># b.entry_set is a Manager that returns QuerySets.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>b<span class=\"o\">.</span>entry_set<span class=\"o\">.</span>filter<span class=\"p\">(</span>headline__contains<span class=\"o\">=</span><span class=\"s1\">&#39;Lennon&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>b<span class=\"o\">.</span>entry_set<span class=\"o\">.</span>count<span class=\"p\">()</span>\n</code></pre></div>\n<p>Anda dapat menimpa nama <code class=\"docutils literal notranslate\">FOO_set</code> dengan mengatur parameter <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ForeignKey.related_name\" title=\"django.db.models.ForeignKey.related_name\"><code class=\"xref py py-attr docutils literal notranslate\">related_name</code></a> dalam penentuan <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> . Sebagai contoh, jika model <code class=\"docutils literal notranslate\">Entry</code> telah diubah pada <code class=\"docutils literal notranslate\">blog = ForeignKey(Blog, on_delete=models.CASCADE, related_name='entries')</code>, contoh kode diatas akan terlihat seperti ini:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>b <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>b<span class=\"o\">.</span>entries<span class=\"o\">.</span>all<span class=\"p\">()</span> <span class=\"c1\"># Returns all Entry objects related to Blog.</span>\n\n<span class=\"go\"># b.entries is a Manager that returns QuerySets.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>b<span class=\"o\">.</span>entries<span class=\"o\">.</span>filter<span class=\"p\">(</span>headline__contains<span class=\"o\">=</span><span class=\"s1\">&#39;Lennon&#39;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>b<span class=\"o\">.</span>entries<span class=\"o\">.</span>count<span class=\"p\">()</span>\n</code></pre></div>\n</section>\n<section id=\"using-a-custom-reverse-manager\">\n<span id=\"using-custom-reverse-manager\"></span><h4>Menggunakan sebuah penyesuaian pengelola membalikkan<a class=\"heading-anchor\" href=\"#using-a-custom-reverse-manager\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Secara awalan <a class=\"reference internal\" href=\"/id/1.11/ref/models/relations/#django.db.models.fields.related.RelatedManager\" title=\"django.db.models.fields.related.RelatedManager\"><code class=\"xref py py-class docutils literal notranslate\">RelatedManager</code></a> digunakan untuk hubungan balikan adalah sebuah subkelas dari <span class=\"xref std std-ref\">default manager 1</span> untuk model itu. Jika anda ingin menentukan pengelola berbeda untuk permintaan yang diberikan anda dapat menggunakan sintaksis berikut:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n<span class=\"k\">class</span> <span class=\"nc\">Entry</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    <span class=\"c1\">#...</span>\n    objects <span class=\"o\">=</span> models<span class=\"o\">.</span>Manager<span class=\"p\">()</span>  <span class=\"c1\"># Default Manager</span>\n    entries <span class=\"o\">=</span> EntryManager<span class=\"p\">()</span>    <span class=\"c1\"># Custom Manager</span>\n\nb <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\nb<span class=\"o\">.</span>entry_set<span class=\"p\">(</span>manager<span class=\"o\">=</span><span class=\"s1\">&#39;entries&#39;</span><span class=\"p\">)</span><span class=\"o\">.</span>all<span class=\"p\">()</span>\n</code></pre></div>\n<p>Jika <code class=\"docutils literal notranslate\">EntryManager</code> melakukan penyaringan awalan dalam metode <code class=\"docutils literal notranslate\">get_queryset()</code> nya, bahwa penyaring akan berlaku ke panggilan <code class=\"docutils literal notranslate\">all()</code>.</p>\n<p>Tentu saja, menentukan pengelola balikan penyesuaian juga mengadakan anda memanggil metode penyesuaiannya:</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>b<span class=\"o\">.</span>entry_set<span class=\"p\">(</span>manager<span class=\"o\">=</span><span class=\"s1\">&#39;entries&#39;</span><span class=\"p\">)</span><span class=\"o\">.</span>is_published<span class=\"p\">()</span>\n</code></pre></div>\n</section>\n<section id=\"additional-methods-to-handle-related-objects\">\n<h4>Cara tambahan untuk menangani obyek terkait<a class=\"heading-anchor\" href=\"#additional-methods-to-handle-related-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Sebagai tambahan pada metode <a class=\"reference internal\" href=\"/id/1.11/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">QuerySet</code></a> ditentukan dalam &quot;Mengambil obyek&quot; diatas, <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> <a class=\"reference internal\" href=\"/id/1.11/topics/db/managers/#django.db.models.Manager\" title=\"django.db.models.Manager\"><code class=\"xref py py-class docutils literal notranslate\">Manager</code></a> mempunyai metode-metode tambahan digunakan untuk menangangi kumpulan dari obyek-obyek terkait. Sebuah ringkasan dari masing-masing dibawah, dan rincian lengkap dapat ditemukan dalam <span class=\"xref std std-doc\">related objects reference 1</span>.</p>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\">tambah(obj1, obj2, ...)</code></dt><dd><p>Menambahkan obyek model ditentukan ke kumpulan obyek terkait.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">buat(**kwargs)</code></dt><dd><p>Membuat obyek baru, menyimpannya dan menaruhnya dalam kumpulan obyek terkait. Mengembalikan obyek dibuat terbaru.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">pindahkan(obj1, obj2, ...)</code></dt><dd><p>Pindahkan obyek model ditentukan dari kumpulan obyek terkait.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">clear()</code></dt><dd><p>Pindahkan semua obyek dari kumpulan obyek terkait.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">set(objs)</code></dt><dd><p>Ganti kumpulan dari obyek terkait.</p>\n</dd>\n</dl>\n<p>Untuk memberikan anggota dari kumpulan terkait, gunakan metode <code class=\"docutils literal notranslate\">set()</code> dengan perulangan dari instance obyek atau daftar nilai-nilai primary key. Sebagai contoh:</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>b <span class=\"o\">=</span> Blog<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\nb<span class=\"o\">.</span>entry_set<span class=\"o\">.</span>set<span class=\"p\">([</span>e1<span class=\"p\">,</span> e2<span class=\"p\">])</span>\n</code></pre></div>\n<p>Dalam contoh ini, <code class=\"docutils literal notranslate\">e1</code> dan <code class=\"docutils literal notranslate\">e2</code> dapat berupa instance Entry penuh, atau nilai primary key integer.</p>\n<p>Jika metode <code class=\"docutils literal notranslate\">clear()</code> tersedia, apapun obyek pra-ada akan dipindahkan dari <code class=\"docutils literal notranslate\">entry_set</code> sebelum semua obyek dalam perulangan (dalam kasus ini, sebuah daftar) ditambahkan ke kumpulan. Jika metode <code class=\"docutils literal notranslate\">clear()</code> <em>tidak</em> tersedia, semua obyek dalam perulangan akan ditambahan tanpa memindahkan unsur-unsur apapun yang ada.</p>\n<p>Setiap tindakan &quot;reverse&quot; digambarkan dalam bagian ini mempunyai pengaruh segera pada basisdata. Setiap penambahan, pembuatan dan penghapusan segera dan otomatis disimpan ke basisdata.</p>\n</section>\n</section>\n<section id=\"many-to-many-relationships\">\n<span id=\"m2m-reverse-relationships\"></span><h3>Hubungan banyak-ke-banyak<a class=\"heading-anchor\" href=\"#many-to-many-relationships\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Kedua akhiran dari hubungan many-to-many mendapatkan akses API otomatis ke akhiran lain. API bekerja seperti hubungan one-to-many &quot;backward&quot;, diatas.</p>\n<p>Perbedaan hanya dalam penamaan atribut: Model yang menentukan <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> menggunakan nama atribut dari bidang itu sendiri, dimana model &quot;reverse&quot; menggunakan nama model huruf kecil dari model asli, ditambah <code class=\"docutils literal notranslate\">'_set'</code> (seperti balikan hubungan one-to-may).</p>\n<p>Sebuah contoh membuatnya mudah untuk dipahami:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>e <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">3</span><span class=\"p\">)</span>\ne<span class=\"o\">.</span>authors<span class=\"o\">.</span>all<span class=\"p\">()</span> <span class=\"c1\"># Returns all Author objects for this Entry.</span>\ne<span class=\"o\">.</span>authors<span class=\"o\">.</span>count<span class=\"p\">()</span>\ne<span class=\"o\">.</span>authors<span class=\"o\">.</span>filter<span class=\"p\">(</span>name__contains<span class=\"o\">=</span><span class=\"s1\">&#39;John&#39;</span><span class=\"p\">)</span>\n\na <span class=\"o\">=</span> Author<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">5</span><span class=\"p\">)</span>\na<span class=\"o\">.</span>entry_set<span class=\"o\">.</span>all<span class=\"p\">()</span> <span class=\"c1\"># Returns all Entry objects for this Author.</span>\n</code></pre></div>\n<p>Seeprti  <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a>, <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> dapat menentukan <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ManyToManyField.related_name\" title=\"django.db.models.ManyToManyField.related_name\"><code class=\"xref py py-attr docutils literal notranslate\">related_name</code></a>. Dalam contoh diatas, jika <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> di <code class=\"docutils literal notranslate\">Entry</code> telah menentukan <code class=\"docutils literal notranslate\">related_name='entries'</code>, kemudian setiap instance <code class=\"docutils literal notranslate\">Author</code> akan memiliki sebuah atribut <code class=\"docutils literal notranslate\">entries</code> daripada <code class=\"docutils literal notranslate\">entry_set</code>.</p>\n</section>\n<section id=\"one-to-one-relationships\">\n<h3>Hubungan satu-ke-satu<a class=\"heading-anchor\" href=\"#one-to-one-relationships\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Hubungan one-to-one sangat mirip ke hubungan many-to-one. Jika anda menentukan <a class=\"reference internal\" href=\"/id/1.11/ref/models/fields/#django.db.models.OneToOneField\" title=\"django.db.models.OneToOneField\"><code class=\"xref py py-class docutils literal notranslate\">OneToOneField</code></a> di model anda, instance-instance dari model itu akan mempunyai akses ke obyek terkait melalui atribut sederhana dari model.</p>\n<p>Sebagai contoh:</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\">EntryDetail</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    entry <span class=\"o\">=</span> models<span class=\"o\">.</span>OneToOneField<span class=\"p\">(</span>Entry<span class=\"p\">,</span> on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">)</span>\n    details <span class=\"o\">=</span> models<span class=\"o\">.</span>TextField<span class=\"p\">()</span>\n\ned <span class=\"o\">=</span> EntryDetail<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\ned<span class=\"o\">.</span>entry <span class=\"c1\"># Returns the related Entry object.</span>\n</code></pre></div>\n<p>Perbedaan datang dalam permintaan &quot;reverse&quot;. Model terkait dalam hubungan one-to-one juga mempunyai akses ke obyek <a class=\"reference internal\" href=\"/id/1.11/topics/db/managers/#django.db.models.Manager\" title=\"django.db.models.Manager\"><code class=\"xref py py-class docutils literal notranslate\">Manager</code></a>, tetapi <a class=\"reference internal\" href=\"/id/1.11/topics/db/managers/#django.db.models.Manager\" title=\"django.db.models.Manager\"><code class=\"xref py py-class docutils literal notranslate\">Manager</code></a> itu mewakili obyek tunggal, daripada sebuah kumpulan obyek-obyek:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>e <span class=\"o\">=</span> Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span><span class=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\ne<span class=\"o\">.</span>entrydetail <span class=\"c1\"># returns the related EntryDetail object</span>\n</code></pre></div>\n<p>Jika tidak ada obyek diberikan ke hubungan ini, Django akan memunculkan pengecualian <code class=\"docutils literal notranslate\">DoesNotExist</code>.</p>\n<p>Instance-instance dapat diberikan ke hubungan balikan dalam cara sama seperti anda akan memberikan meneruskan hubungan:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>e<span class=\"o\">.</span>entrydetail <span class=\"o\">=</span> ed\n</code></pre></div>\n</section>\n<section id=\"how-are-the-backward-relationships-possible\">\n<h3>Bagaimana hubungan kebelakang dimungkinkan?<a class=\"heading-anchor\" href=\"#how-are-the-backward-relationships-possible\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Pemeta hubungan-obyek lainnya membutuhkan anda menentukan hubungan pada kedua sisi. Pengembang Django percaya ini adalah pelanggaran dari prinsip DRY (Don't Repeat Yourself), jadi Django hanya membutuhkan anda menentukan hubungan pada satu akhiran.</p>\n<p>Tetapi bagaimana ini mungkin, memberikan itu kelas model yang tidak mengetahui mana kelas-kelas model lain terkait ke itu sampai kelas-kelas model lain tersebut dimuat?</p>\n<p>Jawaban terletak di <a class=\"reference internal\" href=\"/id/1.11/ref/applications/#django.apps.apps\" title=\"django.apps.apps\"><code class=\"xref py py-data docutils literal notranslate\">app registry</code></a>. Ketika Django mulai, itu mengimpor setiap aplikasi terdaftar di <a class=\"reference internal\" href=\"/id/1.11/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a>, dan kemudian modul  <code class=\"docutils literal notranslate\">models</code> didalam setiap aplikasi. Kapanpun sebuah kelas model dibuat, Django menambahkan hubungan-kebelakang ke setiap model terkait. Jika model terkait belum diimpor, Django menjaga jalur dari hubungan dan menambahkan mereka ketika model terkait akhirnya diimpor.</p>\n<p>Untuk alasan ini, itu adalah khususnya penting bahwa semua model anda sedang gunakan ditentukan dalam aplikasi terdaftar dalam <a class=\"reference internal\" href=\"/id/1.11/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a>. Sebaliknya, hubungan kebelakang mungkin tidak bekerja dengan benar.</p>\n</section>\n<section id=\"queries-over-related-objects\">\n<h3>Meminta terhadap obyek terkait<a class=\"heading-anchor\" href=\"#queries-over-related-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Permintaan melibatkan obyek-obyek terkait mengikuti aturan sama seperti permintaan melibatkan bidang-bidang nilai biasa. Ketika menentukan nilai untuk permintaan untuk pencocokan, anda mungkin menggunakan salah satu instance obyek itu sendiri, atau nilai primary key untuk obyek.</p>\n<p>Sebagai contoh, jika anda mempunyai sebuah obyek Blog <code class=\"docutils literal notranslate\">b</code> dengan <code class=\"docutils literal notranslate\">id=5</code>, tiga permintaan berikut akan mirip:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Entry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>blog<span class=\"o\">=</span>b<span class=\"p\">)</span> <span class=\"c1\"># Query using object instance</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>blog<span class=\"o\">=</span>b<span class=\"o\">.</span>id<span class=\"p\">)</span> <span class=\"c1\"># Query using id from instance</span>\nEntry<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>blog<span class=\"o\">=</span><span class=\"mi\">5</span><span class=\"p\">)</span> <span class=\"c1\"># Query using id directly</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"falling-back-to-raw-sql\">\n<h2>Kembali ke mentah SQL<a class=\"heading-anchor\" href=\"#falling-back-to-raw-sql\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Jika anda menemukan anda sendiri butuh menulis permintaan SQL yang terlalu rumit untuk pemetaan-basisdata Django untuk ditangani, anda dapat kembali menulis SQL dengan tangan. Django mempunyai sepasang pilihan untuk menulis permintaan SQL mentah; lihat <a class=\"reference internal\" href=\"/id/1.11/topics/db/sql/\"><span class=\"doc\">Melakukan permintaan SQL mentah</span></a>.</p>\n<p>Akhirnya, itu penting dicatat bahwa lapisan basisdata Django hanya antarmuka ke basisdata anda. Anda dapat mengakses basisdata anda melalui alat-alat lain, bahasa pemrograman atau kerangka basisdata; tidak ada spesifik-Django tentang basisdata anda.</p>\n</section>","rootId":"making-queries","toc":[{"title":"Membuat obyek","anchor":"creating-objects","children":[]},{"title":"Menyimpan perubahan ke obyek","anchor":"saving-changes-to-objects","children":[{"title":"Menyimpan bidang ForeignKey dan ManyToManyField","anchor":"saving-foreignkey-and-manytomanyfield-fields","children":[]}]},{"title":"Mengambil obyek","anchor":"retrieving-objects","children":[{"title":"Mengambil semua obyek","anchor":"retrieving-all-objects","children":[]},{"title":"Mengambil obyek spesifik dengan menyaring","anchor":"retrieving-specific-objects-with-filters","children":[{"title":"Menambatkan penyaringan","anchor":"chaining-filters","children":[]},{"title":"Disaring QuerySet adalah unik","anchor":"filtered-querysets-are-unique","children":[]},{"title":"QuerySet adalah lazy","anchor":"querysets-are-lazy","children":[]}]},{"title":"Mengambil obyek tunggal dengan get()","anchor":"retrieving-a-single-object-with-get","children":[]},{"title":"Cara QuerySet lain","anchor":"other-queryset-methods","children":[]},{"title":"Membatasi QuerySet","anchor":"limiting-querysets","children":[]},{"title":"Bidang pencarian","anchor":"field-lookups","children":[]},{"title":"Pencarian yang menjangkau hubungan","anchor":"lookups-that-span-relationships","children":[{"title":"Membentangkan hubungan banyak-nilai","anchor":"spanning-multi-valued-relationships","children":[]}]},{"title":"Penyaring dapat mengacu bidang pada model","anchor":"filters-can-reference-fields-on-the-model","children":[]},{"title":"Jalan pintas pencarian pk","anchor":"the-pk-lookup-shortcut","children":[]},{"title":"Meloloskan tanda persen dan garis bawah dalam pernyataan LIKE","anchor":"escaping-percent-signs-and-underscores-in-like-statements","children":[]},{"title":"Cache dan QuerySet","anchor":"caching-and-querysets","children":[{"title":"Ketika QuerySet tidak di cache","anchor":"when-querysets-are-not-cached","children":[]}]}]},{"title":"Pencarian rumit dengan obyek Q","anchor":"complex-lookups-with-q-objects","children":[]},{"title":"Membandingkan obyek","anchor":"comparing-objects","children":[]},{"title":"menghapus obyek","anchor":"deleting-objects","children":[]},{"title":"Menyalin instance model","anchor":"copying-model-instances","children":[]},{"title":"Memperbaharui banyak obyek sekaligus","anchor":"updating-multiple-objects-at-once","children":[]},{"title":"Obyek terkait","anchor":"related-objects","children":[{"title":"Hubungan satu-ke-banyak","anchor":"one-to-many-relationships","children":[{"title":"Meneruskan","anchor":"forward","children":[]},{"title":"Mengikuti hubungan \"\"ke belakang\"","anchor":"following-relationships-backward","children":[]},{"title":"Menggunakan sebuah penyesuaian pengelola membalikkan","anchor":"using-a-custom-reverse-manager","children":[]},{"title":"Cara tambahan untuk menangani obyek terkait","anchor":"additional-methods-to-handle-related-objects","children":[]}]},{"title":"Hubungan banyak-ke-banyak","anchor":"many-to-many-relationships","children":[]},{"title":"Hubungan satu-ke-satu","anchor":"one-to-one-relationships","children":[]},{"title":"Bagaimana hubungan kebelakang dimungkinkan?","anchor":"how-are-the-backward-relationships-possible","children":[]},{"title":"Meminta terhadap obyek terkait","anchor":"queries-over-related-objects","children":[]}]},{"title":"Kembali ke mentah SQL","anchor":"falling-back-to-raw-sql","children":[]}],"breadcrumbs":[{"docname":"topics/index","title":"Menggunakan Django","url":"/id/1.11/topics/"},{"docname":"topics/db/index","title":"Model dan basisdata","url":"/id/1.11/topics/db/"}],"prev":{"docname":"topics/db/models","title":"Model","url":"/id/1.11/topics/db/models/"},"next":{"docname":"topics/db/aggregation","title":"Pengumpulan","url":"/id/1.11/topics/db/aggregation/"},"formats":{"html":"/id/1.11/topics/db/queries/","markdown":"/id/1.11/topics/db/queries.md","json":"/id/1.11/topics/db/queries.json"},"source":"https://github.com/django/django/blob/stable/1.11.x/docs/topics/db/queries.txt","official":"https://docs.djangoproject.com/id/1.11/topics/db/queries/","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","fr","ja","id","pt-br","ko","es","el","pl"]}