{"title":"Menghubungkan aplikasi anda dari Django 0.96 ke 1.0","version":"4.2","locale":"id","docname":"releases/1.0-porting-guide","url":"/id/4.2/releases/1.0-porting-guide/","canonical":"https://djangodocs.dev/id/4.2/releases/1.0-porting-guide/","summary":"Django 1.0 memutus kesesuaian dengan 0.96 di beberapa kawasan. Panduan ini akan membantu anda menghubungkan proyek 0.96 dan apliaksi ke 1.0. Bagian pertama dari…","html":"<h1>Menghubungkan aplikasi anda dari Django 0.96 ke 1.0<a class=\"heading-anchor\" href=\"#porting-your-apps-from-django-0-96-to-1-0\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Django 1.0 memutus kesesuaian dengan 0.96 di beberapa kawasan.</p>\n<p>Panduan ini akan membantu anda menghubungkan proyek 0.96 dan apliaksi ke 1.0. Bagian pertama dari dokumen ini termasuk perubahan umum dibutuhkan untuk berjalan dengan 1.0. Jika setelah melalui bagian pertama kode anda masih rusak, periksa bagian <a class=\"reference internal\" href=\"#less-common-changes\">Less-common Changes</a> untuk daftar ikatan masalah kesesuaian yang kurang umum.</p>\n<aside class=\"admonition admonition-seealso\">\n<p class=\"admonition-title\">Lihat juga</p>\n<p><a class=\"reference internal\" href=\"/id/4.2/releases/1.0/\"><span class=\"doc\">1.0 release notes</span></a>. Dokumen itu menjelaskan fitur-fitur baru di 1.0 lebih dalam; panduan menghubungkan lebih diperhatikan dengan bantuan anda dengan cepat memperbaharui kode anda.</p>\n</aside>\n<section id=\"common-changes\">\n<h2>Perubahan umum<a class=\"heading-anchor\" href=\"#common-changes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Bagian ini menggambarkan perubahan diantara 0.96 dan 1.0 yang paling pengguna butuhkan untuk dibuat.</p>\n<section id=\"use-unicode\">\n<h3>Gunakan Unicode<a class=\"heading-anchor\" href=\"#use-unicode\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Merubah harfiah deretan karakter (<code class=\"docutils literal notranslate\"><span class=\"pre\">'foo'</span></code>) menjadi harfiah Unicode (<code class=\"docutils literal notranslate\"><span class=\"pre\">u'foo'</span></code>). Django sekarang menggunakan deretan karakter Unicode seluruhnya. Di kebanyakan tempat, deretan karakter mentah akan lanjut bekerja, tetapi memperbaharui untuk menggunakan harfiah Unicode akan mencegah pengaburan beberapa masalah.</p>\n<p>Lihat <a class=\"reference internal\" href=\"/id/4.2/ref/unicode/\"><span class=\"doc\">Data Unicode</span></a> untuk rincian penuh.</p>\n</section>\n<section id=\"models\">\n<h3>Model<a class=\"heading-anchor\" href=\"#models\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Perubahan umum ke berkas model anda:</p>\n<section id=\"rename-maxlength-to-max-length\">\n<h4>Namai kembali <code class=\"docutils literal notranslate\"><span class=\"pre\">maxlength</span></code> ke <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code><a class=\"heading-anchor\" href=\"#rename-maxlength-to-max-length\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Namai kembali argumen <code class=\"docutils literal notranslate\"><span class=\"pre\">maxlength</span></code> anda ke <code class=\"docutils literal notranslate\"><span class=\"pre\">max_length</span></code> (ini dirubah agar selaras dengan bidang-bidang formulir):</p>\n</section>\n<section id=\"replace-str-with-unicode\">\n<h4>Ganti <code class=\"docutils literal notranslate\"><span class=\"pre\">__str__</span></code> dengan <code class=\"docutils literal notranslate\"><span class=\"pre\">__unicode__</span></code><a class=\"heading-anchor\" href=\"#replace-str-with-unicode\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Ganti fungsi <code class=\"docutils literal notranslate\"><span class=\"pre\">__str__</span></code> model anda dengan metode <code class=\"docutils literal notranslate\"><span class=\"pre\">__unicode__</span></code>, dan pastikan anda <a class=\"reference internal\" href=\"#use-unicode\">use Unicode</a> (<code class=\"docutils literal notranslate\"><span class=\"pre\">u'foo'</span></code>) di metode itu.</p>\n</section>\n<section id=\"remove-prepopulated-from\">\n<h4>Pindahkan <code class=\"docutils literal notranslate\"><span class=\"pre\">prepopulated_from</span></code><a class=\"heading-anchor\" href=\"#remove-prepopulated-from\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Pindahkan argumen <code class=\"docutils literal notranslate\"><span class=\"pre\">prepopulated_from</span></code> pada bidang model. Itu tidak lagi sah dan telah dipindahkan ke kelas <code class=\"docutils literal notranslate\"><span class=\"pre\">ModelAdmin</span></code> di <code class=\"docutils literal notranslate\"><span class=\"pre\">admin.py</span></code>. Lihat <a class=\"reference internal\" href=\"#the-admin\">the admin</a>, dibawah ini, untuk rincian lebih tentang dirubah ke admin.</p>\n</section>\n<section id=\"remove-core\">\n<h4>Pindahkan <code class=\"docutils literal notranslate\"><span class=\"pre\">core</span></code><a class=\"heading-anchor\" href=\"#remove-core\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Pindahkan argumen <code class=\"docutils literal notranslate\"><span class=\"pre\">core</span></code> dari bidang model anda. itu tidak lagi dibutuhkan, sejak kegunaan yang setara (bagian dari <a class=\"reference internal\" href=\"/id/4.2/ref/contrib/admin/#admin-inlines\"><span class=\"std std-ref\">inline editing</span></a>) ditangani dengan berbeda oleh antarmuka admin sekarang. Anda tidak harus khawatir tentang penyuntingan berderet sampai anda menuju bagian <a class=\"reference internal\" href=\"#the-admin\">the admin</a>, dibawah. Untuk sekarang, pindahkan semua acuan ke <code class=\"docutils literal notranslate\"><span class=\"pre\">core</span></code>.</p>\n</section>\n<section id=\"replace-class-admin-with-admin-py\">\n<h4>Ganti <code class=\"docutils literal notranslate\"><span class=\"pre\">class</span> <span class=\"pre\">Admin:</span></code> dengan <code class=\"docutils literal notranslate\"><span class=\"pre\">admin.py</span></code><a class=\"heading-anchor\" href=\"#replace-class-admin-with-admin-py\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Pindahkan semua pernyataan <code class=\"docutils literal notranslate\"><span class=\"pre\">class</span> <span class=\"pre\">Admin</span></code> sebelah dalam dari model anda. Mereka tidak merusak apapun jika anda meninggalkan mereka, tetapi mereka juga tidak akan melakukan apapun. Untuk mendaftarkan aplikasi dengan admin anda akan pindahkan pernyataan itu ke berkas <code class=\"docutils literal notranslate\"><span class=\"pre\">admin.py</span></code>; lihat <a class=\"reference internal\" href=\"#the-admin\">the admin</a> dibawah untuk lebih rinci.</p>\n<aside class=\"admonition admonition-seealso\">\n<p class=\"admonition-title\">Lihat juga</p>\n<p>Seorang penyumbang pada <a class=\"reference external\" href=\"https://djangosnippets.org/\">djangosnippets</a> telah menuli skembali sebuah tulisan yang akan <a class=\"reference external\" href=\"https://djangosnippets.org/snippets/603/\">scan your models.py and generate a corresponding admin.py</a>.</p>\n</aside>\n</section>\n<section id=\"example\">\n<h4>Contoh<a class=\"heading-anchor\" href=\"#example\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>DIbawah ini adalah sebuah contoh berkas <code class=\"docutils literal notranslate\"><span class=\"pre\">models.py</span></code> dengan semua perubahan anda ingin buat:</p>\n<p>Lama (0.96) <code class=\"docutils literal notranslate\"><span class=\"pre\">models.py</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Author</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">first_name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">maxlength</span><span class=\"o\">=</span><span class=\"mi\">30</span><span class=\"p\">)</span>\n    <span class=\"n\">last_name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">maxlength</span><span class=\"o\">=</span><span class=\"mi\">30</span><span class=\"p\">)</span>\n    <span class=\"n\">slug</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">maxlength</span><span class=\"o\">=</span><span class=\"mi\">60</span><span class=\"p\">,</span> <span class=\"n\">prepopulate_from</span><span class=\"o\">=</span><span class=\"p\">(</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;last_name&quot;</span><span class=\"p\">))</span>\n\n    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Admin</span><span class=\"p\">:</span>\n        <span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;last_name&quot;</span><span class=\"p\">]</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"fm\">__str__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"s2\">&quot;</span><span class=\"si\">%s</span><span class=\"s2\"> </span><span class=\"si\">%s</span><span class=\"s2\">&quot;</span> <span class=\"o\">%</span> <span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">first_name</span><span class=\"p\">,</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">last_name</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Baru (1.0) <code class=\"docutils literal notranslate\"><span class=\"pre\">models.py</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Author</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">first_name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">30</span><span class=\"p\">)</span>\n    <span class=\"n\">last_name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">30</span><span class=\"p\">)</span>\n    <span class=\"n\">slug</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">60</span><span class=\"p\">)</span>\n\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">__unicode__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"s2\">&quot;</span><span class=\"si\">%s</span><span class=\"s2\"> </span><span class=\"si\">%s</span><span class=\"s2\">&quot;</span> <span class=\"o\">%</span> <span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">first_name</span><span class=\"p\">,</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">last_name</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Baru (1.0) <code class=\"docutils literal notranslate\"><span class=\"pre\">admin.py</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Author</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">AuthorAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">list_display</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;last_name&quot;</span><span class=\"p\">]</span>\n    <span class=\"n\">prepopulated_fields</span> <span class=\"o\">=</span> <span class=\"p\">{</span><span class=\"s2\">&quot;slug&quot;</span><span class=\"p\">:</span> <span class=\"p\">(</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;last_name&quot;</span><span class=\"p\">)}</span>\n\n\n<span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">register</span><span class=\"p\">(</span><span class=\"n\">Author</span><span class=\"p\">,</span> <span class=\"n\">AuthorAdmin</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"the-admin\">\n<h3>Admin<a class=\"heading-anchor\" href=\"#the-admin\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Satu dari perubahan terbesar di 1.0 adalah admin baru. Antarmuka administratif Django (<code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.admin</span></code>) telah sepenuhnya di refaktor; pengertian admin sekarang sepenuhnya dipisahkan dari pengertian model, kerangka kerja telah ditulis kembali untuk menggunakan pustaka penanganan formulir baru Django dan dirancang kembali dengan perpanjangan dan penyesuaian dalam pikiran.</p>\n<p>Practically, this means you'll need to rewrite all of your <code class=\"docutils literal notranslate\"><span class=\"pre\">class</span> <span class=\"pre\">Admin</span></code>\ndeclarations. You've already seen in <a class=\"reference internal\" href=\"#models\">models</a> above how to replace your <code class=\"docutils literal notranslate\"><span class=\"pre\">class</span>\n<span class=\"pre\">Admin</span></code> with an <code class=\"docutils literal notranslate\"><span class=\"pre\">admin.site.register()</span></code> call in an <code class=\"docutils literal notranslate\"><span class=\"pre\">admin.py</span></code> file. Below are\nsome more details on how to rewrite that <code class=\"docutils literal notranslate\"><span class=\"pre\">Admin</span></code> declaration into the new\nsyntax.</p>\n<section id=\"use-new-inline-syntax\">\n<h4>Gunakan sintaksis berderet yang baru<a class=\"heading-anchor\" href=\"#use-new-inline-syntax\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Pilihan <code class=\"docutils literal notranslate\"><span class=\"pre\">edit_inline</span></code> baru semua telah dipindahkan ke <code class=\"docutils literal notranslate\"><span class=\"pre\">admin.py</span></code>. Ini adalah contoh:</p>\n<p>Lama (0.96):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Parent</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Child</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">parent</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">ForeignKey</span><span class=\"p\">(</span><span class=\"n\">Parent</span><span class=\"p\">,</span> <span class=\"n\">edit_inline</span><span class=\"o\">=</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">STACKED</span><span class=\"p\">,</span> <span class=\"n\">num_in_admin</span><span class=\"o\">=</span><span class=\"mi\">3</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Baru (1.0):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ChildInline</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">StackedInline</span><span class=\"p\">):</span>\n    <span class=\"n\">model</span> <span class=\"o\">=</span> <span class=\"n\">Child</span>\n    <span class=\"n\">extra</span> <span class=\"o\">=</span> <span class=\"mi\">3</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ParentAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">model</span> <span class=\"o\">=</span> <span class=\"n\">Parent</span>\n    <span class=\"n\">inlines</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"n\">ChildInline</span><span class=\"p\">]</span>\n\n\n<span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">register</span><span class=\"p\">(</span><span class=\"n\">Parent</span><span class=\"p\">,</span> <span class=\"n\">ParentAdmin</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Lihat <a class=\"reference internal\" href=\"/id/4.2/ref/contrib/admin/#admin-inlines\"><span class=\"std std-ref\">Obyek InlineModelAdmin</span></a> untuk rinci.</p>\n</section>\n<section id=\"simplify-fields-or-use-fieldsets\">\n<h4>Sederhanakan <code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code>, atau gunakan <code class=\"docutils literal notranslate\"><span class=\"pre\">fieldsets</span></code><a class=\"heading-anchor\" href=\"#simplify-fields-or-use-fieldsets\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Sintaksis <code class=\"docutils literal notranslate\"><span class=\"pre\">fields</span></code> lama sangat membingungkan, dan telah disederhanakan. Sintaksis lama masih bekerja, tetapi anda akan butuh menggunakan <code class=\"docutils literal notranslate\"><span class=\"pre\">fieldsets</span></code> sebagai gantinya.</p>\n<p>Lama (0.96):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ModelOne</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n\n    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Admin</span><span class=\"p\">:</span>\n        <span class=\"n\">fields</span> <span class=\"o\">=</span> <span class=\"p\">((</span><span class=\"kc\">None</span><span class=\"p\">,</span> <span class=\"p\">{</span><span class=\"s2\">&quot;fields&quot;</span><span class=\"p\">:</span> <span class=\"p\">(</span><span class=\"s2\">&quot;foo&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;bar&quot;</span><span class=\"p\">)}),)</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ModelTwo</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"o\">...</span>\n\n    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Admin</span><span class=\"p\">:</span>\n        <span class=\"n\">fields</span> <span class=\"o\">=</span> <span class=\"p\">(</span>\n            <span class=\"p\">(</span><span class=\"s2\">&quot;group1&quot;</span><span class=\"p\">,</span> <span class=\"p\">{</span><span class=\"s2\">&quot;fields&quot;</span><span class=\"p\">:</span> <span class=\"p\">(</span><span class=\"s2\">&quot;foo&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;bar&quot;</span><span class=\"p\">),</span> <span class=\"s2\">&quot;classes&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;collapse&quot;</span><span class=\"p\">}),</span>\n            <span class=\"p\">(</span><span class=\"s2\">&quot;group2&quot;</span><span class=\"p\">,</span> <span class=\"p\">{</span><span class=\"s2\">&quot;fields&quot;</span><span class=\"p\">:</span> <span class=\"p\">(</span><span class=\"s2\">&quot;spam&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;eggs&quot;</span><span class=\"p\">),</span> <span class=\"s2\">&quot;classes&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;collapse wide&quot;</span><span class=\"p\">}),</span>\n        <span class=\"p\">)</span>\n</code></pre></div>\n<p>Baru (1.0):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ModelOneAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">fields</span> <span class=\"o\">=</span> <span class=\"p\">(</span><span class=\"s2\">&quot;foo&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;bar&quot;</span><span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">ModelTwoAdmin</span><span class=\"p\">(</span><span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">ModelAdmin</span><span class=\"p\">):</span>\n    <span class=\"n\">fieldsets</span> <span class=\"o\">=</span> <span class=\"p\">(</span>\n        <span class=\"p\">(</span><span class=\"s2\">&quot;group1&quot;</span><span class=\"p\">,</span> <span class=\"p\">{</span><span class=\"s2\">&quot;fields&quot;</span><span class=\"p\">:</span> <span class=\"p\">(</span><span class=\"s2\">&quot;foo&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;bar&quot;</span><span class=\"p\">),</span> <span class=\"s2\">&quot;classes&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;collapse&quot;</span><span class=\"p\">}),</span>\n        <span class=\"p\">(</span><span class=\"s2\">&quot;group2&quot;</span><span class=\"p\">,</span> <span class=\"p\">{</span><span class=\"s2\">&quot;fields&quot;</span><span class=\"p\">:</span> <span class=\"p\">(</span><span class=\"s2\">&quot;spam&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;eggs&quot;</span><span class=\"p\">),</span> <span class=\"s2\">&quot;classes&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;collapse wide&quot;</span><span class=\"p\">}),</span>\n    <span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"admonition admonition-seealso\">\n<p class=\"admonition-title\">Lihat juga</p>\n<ul class=\"simple\">\n<li><p>Informasi lebih rinci mengenai perubahan dan alasan dibelakang mereka dapat ditemukan pada <a class=\"reference external\" href=\"https://code.djangoproject.com/wiki/NewformsAdminBranch\">NewformsAdminBranch wiki page</a></p></li>\n<li><p>Admin baru datang dengan satu ton fitur baru; anda dapat membaca tentang mereka di <a class=\"reference internal\" href=\"/id/4.2/ref/contrib/admin/\"><span class=\"doc\">admin documentation</span></a>.</p></li>\n</ul>\n</aside>\n</section>\n</section>\n<section id=\"urls\">\n<h3>URL<a class=\"heading-anchor\" href=\"#urls\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"update-your-root-urls-py\">\n<h4>Perbaharui akar <code class=\"docutils literal notranslate\"><span class=\"pre\">urls.py</span></code> anda.<a class=\"heading-anchor\" href=\"#update-your-root-urls-py\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Jika anda menggunakan situs admin, anda butuh memperbaharui akar <code class=\"docutils literal notranslate\"><span class=\"pre\">urls.py</span></code> anda.</p>\n<p>Lama (0.96) <code class=\"docutils literal notranslate\"><span class=\"pre\">urls.py</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.conf.urls.defaults</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"o\">*</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"n\">patterns</span><span class=\"p\">(</span>\n    <span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">(</span><span class=\"sa\">r</span><span class=\"s2\">&quot;^admin/&quot;</span><span class=\"p\">,</span> <span class=\"n\">include</span><span class=\"p\">(</span><span class=\"s2\">&quot;django.contrib.admin.urls&quot;</span><span class=\"p\">)),</span>\n    <span class=\"c1\"># ... the rest of your URLs here ...</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p>Baru (1.0) <code class=\"docutils literal notranslate\"><span class=\"pre\">urls.py</span></code>:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.conf.urls.defaults</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"o\">*</span>\n\n<span class=\"c1\"># The next two lines enable the admin and load each admin.py file:</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.contrib</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">admin</span>\n\n<span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">autodiscover</span><span class=\"p\">()</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"n\">patterns</span><span class=\"p\">(</span>\n    <span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">(</span><span class=\"sa\">r</span><span class=\"s2\">&quot;^admin/(.*)&quot;</span><span class=\"p\">,</span> <span class=\"n\">admin</span><span class=\"o\">.</span><span class=\"n\">site</span><span class=\"o\">.</span><span class=\"n\">root</span><span class=\"p\">),</span>\n    <span class=\"c1\"># ... the rest of your URLs here ...</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"views\">\n<h3>View<a class=\"heading-anchor\" href=\"#views\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"use-django-forms-instead-of-newforms\">\n<h4>Gunakan <code class=\"docutils literal notranslate\"><span class=\"pre\">django.forms</span></code> sebagai gantinya <code class=\"docutils literal notranslate\"><span class=\"pre\">newforms</span></code><a class=\"heading-anchor\" href=\"#use-django-forms-instead-of-newforms\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Ganti <code class=\"docutils literal notranslate\"><span class=\"pre\">django.newforms</span></code> dengan <code class=\"docutils literal notranslate\"><span class=\"pre\">django.forms</span></code> -- Django 1.0 dinamai kembali modul <code class=\"docutils literal notranslate\"><span class=\"pre\">newforms</span></code> (diperkenalkan di 0.96) untuk <code class=\"docutils literal notranslate\"><span class=\"pre\">forms</span></code> lama kosong. Modul <code class=\"docutils literal notranslate\"><span class=\"pre\">oldforms</span></code> juga dipindahkan.</p>\n<p>Jika anda sudah menggunakan pustaka <code class=\"docutils literal notranslate\"><span class=\"pre\">newforms</span></code>, dan anda menggunakan anjuran kami sintaksis pernyataan <code class=\"docutils literal notranslate\"><span class=\"pre\">import</span></code>, semua anda harus lakukan adalah merubah pernyataan impor anda.</p>\n<p>Lama:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">newforms</span> <span class=\"k\">as</span> <span class=\"n\">forms</span>\n</code></pre></div>\n<p>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><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">forms</span>\n</code></pre></div>\n<p>Jika anda sedang menggunakan sistem formulir lama (dahulu dikenal sebagai <code class=\"docutils literal notranslate\"><span class=\"pre\">django.forms</span></code> dan <code class=\"docutils literal notranslate\"><span class=\"pre\">django.oldforms</span></code>), anda akan harus menuli skembali formulir anda. Tempat bagus untuk memulai adalah <a class=\"reference internal\" href=\"/id/4.2/topics/forms/\"><span class=\"doc\">forms documentation</span></a></p>\n</section>\n<section id=\"handle-uploaded-files-using-the-new-api\">\n<h4>Menangani berkas terunggah menggunakan API baru<a class=\"heading-anchor\" href=\"#handle-uploaded-files-using-the-new-api\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Rubah penggunaan berkas-berkas terunggah -- yaitu, masukan di <code class=\"docutils literal notranslate\"><span class=\"pre\">request.FILES</span></code> -- sebagai kamus sederhana dengan <a class=\"reference internal\" href=\"/id/4.2/ref/files/uploads/#django.core.files.uploadedfile.UploadedFile\" title=\"django.core.files.uploadedfile.UploadedFile\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">UploadedFile</span></code></a> baru. Sintaksis kamus lama tidak lagi bekerja.</p>\n<p>Jadi, dalam tampilan 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><span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">my_view</span><span class=\"p\">(</span><span class=\"n\">request</span><span class=\"p\">):</span>\n    <span class=\"n\">f</span> <span class=\"o\">=</span> <span class=\"n\">request</span><span class=\"o\">.</span><span class=\"n\">FILES</span><span class=\"p\">[</span><span class=\"s2\">&quot;file_field_name&quot;</span><span class=\"p\">]</span>\n    <span class=\"o\">...</span>\n</code></pre></div>\n<p>...anda butuh membuat perubahan berikut:</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p>Lama (0.96)</p></th>\n<th class=\"head\"><p>Baru (1.0)</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">f['content']</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">f.read()</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">f['filename']</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">f.name</span></code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">f['content-type']</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">f.content_type</span></code></p></td>\n</tr>\n</tbody>\n</table>\n</div>\n</section>\n<section id=\"work-with-file-fields-using-the-new-api\">\n<h4>Bekerja dengan bidang berkas menggunakan API baru<a class=\"heading-anchor\" href=\"#work-with-file-fields-using-the-new-api\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Penerapan internal dari <a class=\"reference internal\" href=\"/id/4.2/ref/models/fields/#django.db.models.FileField\" title=\"django.db.models.FileField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.db.models.FileField</span></code></a> telah berubah. Hasil nampak dari ini adalah bahwa cara anda mengakses atribut khusus (URL, berkas nama, ukuran gambar, dll.) dari bidang model ini telah berubah. Anda akan butuh membuat perubahan berikut, menganggap <a class=\"reference internal\" href=\"/id/4.2/ref/models/fields/#django.db.models.FileField\" title=\"django.db.models.FileField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">FileField</span></code></a> model anda dipanggil <code class=\"docutils literal notranslate\"><span class=\"pre\">myfile</span></code>:</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p>Lama (0.96)</p></th>\n<th class=\"head\"><p>Baru (1.0)</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">myfile.get_content_filename()</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">myfile.content.path</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">myfile.get_content_url()</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">myfile.content.url</span></code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">myfile.get_content_size()</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">myfile.content.size</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">myfile.save_content_file()</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">myfile.content.save()</span></code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">myfile.get_content_width()</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">myfile.content.width</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">myfile.get_content_height()</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">myfile.content.height</span></code></p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>Catat bahwa atribut <code class=\"docutils literal notranslate\"><span class=\"pre\">width</span></code> dan <code class=\"docutils literal notranslate\"><span class=\"pre\">height</span></code> hanya masuk akal untuk bidang <a class=\"reference internal\" href=\"/id/4.2/ref/models/fields/#django.db.models.ImageField\" title=\"django.db.models.ImageField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ImageField</span></code></a>. Rincian lebih dapat ditemukan di dokumentasi <a class=\"reference internal\" href=\"/id/4.2/ref/models/fields/\"><span class=\"doc\">model API</span></a>.</p>\n</section>\n<section id=\"use-paginator-instead-of-objectpaginator\">\n<h4>Gunakan <code class=\"docutils literal notranslate\"><span class=\"pre\">Paginator</span></code> daripada <code class=\"docutils literal notranslate\"><span class=\"pre\">ObjectPaginator</span></code><a class=\"heading-anchor\" href=\"#use-paginator-instead-of-objectpaginator\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">ObjectPaginator</span></code> di 0.96 telah dipindahkan dan diganti dengan versi diperbaiki, <a class=\"reference internal\" href=\"/id/4.2/ref/paginator/#django.core.paginator.Paginator\" title=\"django.core.paginator.Paginator\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.core.paginator.Paginator</span></code></a>.</p>\n</section>\n</section>\n<section id=\"templates\">\n<h3>Templat<a class=\"heading-anchor\" href=\"#templates\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"learn-to-love-autoescaping\">\n<h4>Belajar mencintai pelolosan otomatis<a class=\"heading-anchor\" href=\"#learn-to-love-autoescaping\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Secara awal, sistem cetakan sekarang otomatis meloloskan HTML keluaran setiap variabel. Untuk mempelajari lebih, lihat <a class=\"reference internal\" href=\"/id/4.2/ref/templates/language/#automatic-html-escaping\"><span class=\"std std-ref\">Pelolosan HTML otomatis</span></a>.</p>\n<p>Untuk meniadakan pelolosan otomatis untuk variabel tersendiri, gunakan <a class=\"reference internal\" href=\"/id/4.2/ref/templates/builtins/#std-templatefilter-safe\"><code class=\"xref std std-tfilter docutils literal notranslate\"><span class=\"pre\">safe</span></code></a> filter:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code>This will be escaped: <span class=\"cp\">{{</span> <span class=\"nv\">data</span> <span class=\"cp\">}}</span>\nThis will not be escaped: <span class=\"cp\">{{</span> <span class=\"nv\">data</span><span class=\"o\">|</span><span class=\"nf\">safe</span> <span class=\"cp\">}}</span>\n</code></pre></div>\n<p>Untuk meniadakan pelolosan otomatis untuk keseluruhan cetakan, bungkus cetakan (atau cukup bagian tertentu dari cetakan) di etiket <a class=\"reference internal\" href=\"/id/4.2/ref/templates/builtins/#std-templatetag-autoescape\"><code class=\"xref std std-ttag docutils literal notranslate\"><span class=\"pre\">autoescape</span></code></a>:</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">autoescape</span> <span class=\"nv\">off</span> <span class=\"cp\">%}</span>\n   ... unescaped template content here ...\n<span class=\"cp\">{%</span> <span class=\"k\">endautoescape</span> <span class=\"cp\">%}</span>\n</code></pre></div>\n</section>\n</section>\n</section>\n<section id=\"less-common-changes\">\n<h2>Perubahan kurang umum<a class=\"heading-anchor\" href=\"#less-common-changes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Perubahan berikut lebih kecil, lebih perubahan lokal. Mereka hanya berpengaruh lebih pengguna lanjutan, tetapi itu mungkin bernilai baik membaca melalui daftar dan memeriksa kode anda untuk hal-hal ini.</p>\n<section id=\"signals\">\n<h3>Sinyal<a class=\"heading-anchor\" href=\"#signals\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<ul class=\"simple\">\n<li><p>Tambah <code class=\"docutils literal notranslate\"><span class=\"pre\">**kwargs</span></code> pada setiap penangan sinyal terdaftar.</p></li>\n<li><p>Hubungkan, putuskan, dan kirim sinyal melalui metode pada obyek <a class=\"reference internal\" href=\"/id/4.2/topics/signals/#django.dispatch.Signal\" title=\"django.dispatch.Signal\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Signal</span></code></a> daripada melalui modul metode di <code class=\"docutils literal notranslate\"><span class=\"pre\">django.dispatch.dispatcher</span></code>.</p></li>\n<li><p>Pindahkan tiap penggunaan pilihan pengirim <code class=\"docutils literal notranslate\"><span class=\"pre\">Anonymous</span></code> dan <code class=\"docutils literal notranslate\"><span class=\"pre\">Any</span></code>; mereka tidak lagi ada. Anda masih dapat menerima sinyal dikirim oleh pengirim dengan menggunakan <code class=\"docutils literal notranslate\"><span class=\"pre\">sender=None</span></code></p></li>\n<li><p>Buat sinyal penyesuaian apa saja anda telah nyatakan kedalam instance dari <a class=\"reference internal\" href=\"/id/4.2/topics/signals/#django.dispatch.Signal\" title=\"django.dispatch.Signal\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.dispatch.Signal</span></code></a> sebagai ganti dari obyek anonim.</p></li>\n</ul>\n<p>Berikut rekap dari perubahan kode yang perlu anda lakukan:</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p>Lama (0.96)</p></th>\n<th class=\"head\"><p>Baru (1.0)</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">def</span> <span class=\"pre\">callback(sender)</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">def</span> <span class=\"pre\">callback(sender,</span> <span class=\"pre\">**kwargs)</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">sig</span> <span class=\"pre\">=</span> <span class=\"pre\">object()</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">sig</span> <span class=\"pre\">=</span> <span class=\"pre\">django.dispatch.Signal()</span></code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">dispatcher.connect(callback,</span> <span class=\"pre\">sig)</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">sig.connect(callback)</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">dispatcher.send(sig,</span> <span class=\"pre\">sender)</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">sig.send(sender)</span></code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">dispatcher.connect(callback,</span> <span class=\"pre\">sig,</span> <span class=\"pre\">sender=Any)</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">sig.connect(callback,</span> <span class=\"pre\">sender=None)</span></code></p></td>\n</tr>\n</tbody>\n</table>\n</div>\n</section>\n<section id=\"comments\">\n<h3>Komentar<a class=\"heading-anchor\" href=\"#comments\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Jika anda menggunakan aplikasi <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.comments</span></code> Django 0.96, anda akan btuuh meningkatkan ke aplikasi komentar baru diperkenalkan di 1.0. Lihat panduan peningkatan untuk rincian.</p>\n</section>\n<section id=\"template-tags\">\n<h3>Tag templat<a class=\"heading-anchor\" href=\"#template-tags\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"spaceless-tag\">\n<h4>Etiket <a class=\"reference internal\" href=\"/id/4.2/ref/templates/builtins/#std-templatetag-spaceless\"><code class=\"xref std std-ttag docutils literal notranslate\"><span class=\"pre\">spaceless</span></code></a><a class=\"heading-anchor\" href=\"#spaceless-tag\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Template tag <code class=\"docutils literal notranslate\"><span class=\"pre\">spaceless</span></code> sekarang menghapus <em>semua</em> spasi diantara tag HTML, alih-alih mempertahankan satu buah spasi.</p>\n</section>\n</section>\n<section id=\"local-flavors\">\n<h3>Rasa lokal<a class=\"heading-anchor\" href=\"#local-flavors\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"u-s-local-flavor\">\n<h4>Rasa lokal U.S<a class=\"heading-anchor\" href=\"#u-s-local-flavor\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.localflavor.usa</span></code> telah dinamai kembali ke <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.localflavor.us</span></code>. Perubahan ini dibuat untuk mencocokan penamaan skema dari rasa lokal lainnya. Untuk memindahkan kode anda, anda yang butuh lakukan adalah merubah impor.</p>\n</section>\n</section>\n<section id=\"sessions\">\n<h3>Sesi<a class=\"heading-anchor\" href=\"#sessions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"getting-a-new-session-key\">\n<h4>Mendapatkan kunci sesi baru<a class=\"heading-anchor\" href=\"#getting-a-new-session-key\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">SessionBase.get_new_session_key()</span></code> telah dinamai kembali menjadi <code class=\"docutils literal notranslate\"><span class=\"pre\">_get_new_session_key()</span></code>. <code class=\"docutils literal notranslate\"><span class=\"pre\">get_new_session_object()</span></code> tidak lagi ada.</p>\n</section>\n</section>\n<section id=\"fixtures\">\n<h3>Perlengkapan<a class=\"heading-anchor\" href=\"#fixtures\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"loading-a-row-no-longer-calls-save\">\n<h4>Memuat sebuah baris yang tidak memanggil <code class=\"docutils literal notranslate\"><span class=\"pre\">save()</span></code><a class=\"heading-anchor\" href=\"#loading-a-row-no-longer-calls-save\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Sebelumnya, memuat sebuah baris secara otomatis menjalankan metode <code class=\"docutils literal notranslate\"><span class=\"pre\">save()</span></code> model. Ini bukan lagi kasus, jadi tiap bidang (sebagai contoh: timestamp) yang dikumpulkan otomatis oleh <code class=\"docutils literal notranslate\"><span class=\"pre\">save()</span></code> sekarang butuh nilai eksplisit di tiap perlengkapan tetap.</p>\n</section>\n</section>\n<section id=\"settings\">\n<h3>Pengaturan<a class=\"heading-anchor\" href=\"#settings\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"better-exceptions\">\n<h4>Pengecualian terbaik<a class=\"heading-anchor\" href=\"#better-exceptions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p><a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#EnvironmentError\" title=\"(di Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">EnvironmentError</span></code></a> lama telah dipisah menjadi <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#ImportError\" title=\"(di Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">ImportError</span></code></a> ketika Django gagal menemukan modul pengaturan dan <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#RuntimeError\" title=\"(di Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">RuntimeError</span></code></a> ketika anda mencoba mengkonfigurasi kembali pengaturan setelah selesai menggunakan mereka.</p>\n</section>\n<section id=\"login-url-has-moved\">\n<h4><a class=\"reference internal\" href=\"/id/4.2/ref/settings/#std-setting-LOGIN_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">LOGIN_URL</span></code></a> telah dipindahkan<a class=\"heading-anchor\" href=\"#login-url-has-moved\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Ketetapan <a class=\"reference internal\" href=\"/id/4.2/ref/settings/#std-setting-LOGIN_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">LOGIN_URL</span></code></a> dipindah dari <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.auth</span></code> kedalam modul <code class=\"docutils literal notranslate\"><span class=\"pre\">settings</span></code>. Daripada menggunakan <code class=\"docutils literal notranslate\"><span class=\"pre\">from</span> <span class=\"pre\">django.contrib.auth</span> <span class=\"pre\">import</span> <span class=\"pre\">LOGIN_URL</span></code> mengacu pada <a class=\"reference internal\" href=\"/id/4.2/ref/settings/#std-setting-LOGIN_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">settings.LOGIN_URL</span></code></a>.</p>\n</section>\n<section id=\"append-slash-behavior-has-been-updated\">\n<h4>Perilaku <a class=\"reference internal\" href=\"/id/4.2/ref/settings/#std-setting-APPEND_SLASH\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">APPEND_SLASH</span></code></a> telah diperbaharui<a class=\"heading-anchor\" href=\"#append-slash-behavior-has-been-updated\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Di 0.96, jika sebuah URL tidak berakhir di garis miring atau mempunyai titik di akhir komponen dari jalurnya, dan <a class=\"reference internal\" href=\"/id/4.2/ref/settings/#std-setting-APPEND_SLASH\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">APPEND_SLASH</span></code></a> adalah True, Django akan mengalihkan ke URL sama, tetapi dengan tanda miring ditambahkan pada akhir. Sekarang, Django memeriksa apakah pola tanpa ekor garis miring akan cocok oleh sesuatu di pola URL anda. Jika demikian, tidak ada pengalihan, karena itu dianggap anda sengaja ingin menangkap pola itu.</p>\n<p>Untuk kebanyakan orang, ini tidak akan membutuhkan perubahan. Beberapa orang, meskipun, mempunyai pola URL yang 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=\"sa\">r</span><span class=\"s2\">&quot;/some_prefix/(.*)$&quot;</span>\n</code></pre></div>\n<p>Sebelumnya, pola itu akan dialihkan untuk mempunyai sebuah ekor garis miring. Jika anda selalu ingin garis miring pada URL itu, tulis kembali pola sebagai:</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=\"sa\">r</span><span class=\"s2\">&quot;/some_prefix/(.*/)$&quot;</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"smaller-model-changes\">\n<h3>Perubahan model kecil<a class=\"heading-anchor\" href=\"#smaller-model-changes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"different-exception-from-get\">\n<h4>Pengecualian berbeda dari <code class=\"docutils literal notranslate\"><span class=\"pre\">get()</span></code><a class=\"heading-anchor\" href=\"#different-exception-from-get\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Pengelola sekarang mengembalikan pengecualian <a class=\"reference internal\" href=\"/id/4.2/ref/exceptions/#django.core.exceptions.MultipleObjectsReturned\" title=\"django.core.exceptions.MultipleObjectsReturned\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">MultipleObjectsReturned</span></code></a> daripada <a class=\"reference external\" href=\"https://docs.python.org/3/library/exceptions.html#AssertionError\" title=\"(di Python v3.14)\"><code class=\"xref py py-exc docutils literal notranslate\"><span class=\"pre\">AssertionError</span></code></a>:</p>\n<p>Lama (0.96):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">try</span><span class=\"p\">:</span>\n    <span class=\"n\">Model</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"o\">...</span><span class=\"p\">)</span>\n<span class=\"k\">except</span> <span class=\"ne\">AssertionError</span><span class=\"p\">:</span>\n    <span class=\"n\">handle_the_error</span><span class=\"p\">()</span>\n</code></pre></div>\n<p>Baru (1.0):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">try</span><span class=\"p\">:</span>\n    <span class=\"n\">Model</span><span class=\"o\">.</span><span class=\"n\">objects</span><span class=\"o\">.</span><span class=\"n\">get</span><span class=\"p\">(</span><span class=\"o\">...</span><span class=\"p\">)</span>\n<span class=\"k\">except</span> <span class=\"n\">Model</span><span class=\"o\">.</span><span class=\"n\">MultipleObjectsReturned</span><span class=\"p\">:</span>\n    <span class=\"n\">handle_the_error</span><span class=\"p\">()</span>\n</code></pre></div>\n</section>\n<section id=\"lazydate-has-been-fired\">\n<h4><code class=\"docutils literal notranslate\"><span class=\"pre\">LazyDate</span></code> telah dinyalakan<a class=\"heading-anchor\" href=\"#lazydate-has-been-fired\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Kelas pembantu <code class=\"docutils literal notranslate\"><span class=\"pre\">LazyDate</span></code> tidak lagi ada.</p>\n<p>Nilai bidang awalan dan permintaan argumen keduanya obyek callable, jadi instance dari <code class=\"docutils literal notranslate\"><span class=\"pre\">LazyDate</span></code> dapat diganti dengan acuan pada <code class=\"docutils literal notranslate\"><span class=\"pre\">datetime.datetime.now</span></code>:</p>\n<p>Lama (0.96):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Article</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">title</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">maxlength</span><span class=\"o\">=</span><span class=\"mi\">100</span><span class=\"p\">)</span>\n    <span class=\"n\">published</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">DateField</span><span class=\"p\">(</span><span class=\"n\">default</span><span class=\"o\">=</span><span class=\"n\">LazyDate</span><span class=\"p\">())</span>\n</code></pre></div>\n<p>Baru (1.0):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">datetime</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Article</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">title</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CharField</span><span class=\"p\">(</span><span class=\"n\">max_length</span><span class=\"o\">=</span><span class=\"mi\">100</span><span class=\"p\">)</span>\n    <span class=\"n\">published</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">DateField</span><span class=\"p\">(</span><span class=\"n\">default</span><span class=\"o\">=</span><span class=\"n\">datetime</span><span class=\"o\">.</span><span class=\"n\">datetime</span><span class=\"o\">.</span><span class=\"n\">now</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"decimalfield-is-new-and-floatfield-is-now-a-proper-float\">\n<h4><code class=\"docutils literal notranslate\"><span class=\"pre\">DecimalField</span></code> adalah baru, dan <code class=\"docutils literal notranslate\"><span class=\"pre\">FloatField</span></code> sekarang float tepat.<a class=\"heading-anchor\" href=\"#decimalfield-is-new-and-floatfield-is-now-a-proper-float\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Lama (0.96):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyModel</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">field_name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">FloatField</span><span class=\"p\">(</span><span class=\"n\">max_digits</span><span class=\"o\">=</span><span class=\"mi\">10</span><span class=\"p\">,</span> <span class=\"n\">decimal_places</span><span class=\"o\">=</span><span class=\"mi\">3</span><span class=\"p\">)</span>\n    <span class=\"o\">...</span>\n</code></pre></div>\n<p>Baru (1.0):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyModel</span><span class=\"p\">(</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Model</span><span class=\"p\">):</span>\n    <span class=\"n\">field_name</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">DecimalField</span><span class=\"p\">(</span><span class=\"n\">max_digits</span><span class=\"o\">=</span><span class=\"mi\">10</span><span class=\"p\">,</span> <span class=\"n\">decimal_places</span><span class=\"o\">=</span><span class=\"mi\">3</span><span class=\"p\">)</span>\n    <span class=\"o\">...</span>\n</code></pre></div>\n<p>Jika anda lupa membuat perubahan ini, anda akan melihat kesalahan tentang <code class=\"docutils literal notranslate\"><span class=\"pre\">FloatField</span></code> bukan mengambil atribut <code class=\"docutils literal notranslate\"><span class=\"pre\">max_digits</span></code> di <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__</span></code>, karena <code class=\"docutils literal notranslate\"><span class=\"pre\">FloatField</span></code> baru mengambil argumen terkait tidak teliti.</p>\n<p>Jika anda sedang menggunakan MySQL atau PostgreSQL, tidak dibtuuhkan perubahan lebih lanjut. Jenis kolom basisdata untuk <code class=\"docutils literal notranslate\"><span class=\"pre\">DecimalField</span></code> adalah sama untuk <code class=\"docutils literal notranslate\"><span class=\"pre\">FloatField</span></code> lama.</p>\n<p>Jika anda menggunakan SQLite, anda butuh memaksa basisdata melihat kolom yang sesuai sebagai jenis desimal, daripada float. untuk melakukan ini, anda akan butuh memuat kembali data anda. Lakukam ini setelah anda membuat perubahan untuk menggunakan <code class=\"docutils literal notranslate\"><span class=\"pre\">DecimalField</span></code> di kode anda dan kode Django diperbaharui.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Peringatan</p>\n<p><strong>Sokong basisdata anda dahulu!</strong></p>\n<p>For SQLite, this means making a copy of the single file that stores the\ndatabase (the name of that file is the <code class=\"docutils literal notranslate\"><span class=\"pre\">DATABASE_NAME</span></code> in your\n<code class=\"docutils literal notranslate\"><span class=\"pre\">settings.py</span></code> file).</p>\n</aside>\n<p>Untuk meningkatkan setiap aplikasi untuk menggunakan sebuah <code class=\"docutils literal notranslate\"><span class=\"pre\">DecimalField</span></code>, anda dapat melakukan berikut, mengganti <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;app&gt;</span></code> di kode dibawah ini dengan setiap nama aplikasi:</p>\n<div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>./manage.py<span class=\"w\"> </span>dumpdata<span class=\"w\"> </span>--format<span class=\"o\">=</span>xml<span class=\"w\"> </span>&lt;app&gt;<span class=\"w\"> </span>&gt;<span class=\"w\"> </span>data-dump.xml\n<span class=\"gp\">$ </span>./manage.py<span class=\"w\"> </span>reset<span class=\"w\"> </span>&lt;app&gt;\n<span class=\"gp\">$ </span>./manage.py<span class=\"w\"> </span>loaddata<span class=\"w\"> </span>data-dump.xml\n</code></pre></div>\n<p>Catatan:</p>\n<ol class=\"arabic simple\">\n<li><p>Itu sangat penting bahwa anda mengingat untuk menggunakan bentuk XML dalam langkah pertama dari pengolahan ini. Kami sedang menggunakan fitur dari data buangan XML yang membuat belokan float ke desimal dengan SQLite memungkinkan.</p></li>\n<li><p>In the second step you will be asked to confirm that you are prepared to\nlose the data for the application(s) in question. Say yes; we'll restore\nthis data in the third step.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">DecimalField</span></code> tidak digunakan di tiap aplikasi yang dibekali dengan Django sebelum perubahan ini dibuat, jadi anda tidak butuh khawatir tentang melakukan prosedur ini untuk tiap model Django standar.</p></li>\n</ol>\n<p>Jika sesuatu berjalan salah di pengolahan diatas, cukup salin berkas basisdata sokongan anda terhadap berkas asli dan mulai kembali.</p>\n</section>\n</section>\n<section id=\"internationalization\">\n<h3>Internasionalisasi<a class=\"heading-anchor\" href=\"#internationalization\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"django-views-i18n-set-language-now-requires-a-post-request\">\n<h4><a class=\"reference internal\" href=\"/id/4.2/topics/i18n/translation/#django.views.i18n.set_language\" title=\"django.views.i18n.set_language\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.views.i18n.set_language()</span></code></a> sekarang membutuhkan permintaan POST<a class=\"heading-anchor\" href=\"#django-views-i18n-set-language-now-requires-a-post-request\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Sebelumnya, permintaan GET telah digunakan. Perilaku lama berarti bahwa keadaan (lokal digunakan untuk menampilkan situs) dapat berubah dengan permintaan GET, yaitu terhadap anjuran spesifikasi HTTP. Kode memanggil tampilan ini harus memastikan bahwa permintaan POST sekaragn dibuat, sebagai gantinya GET. Ini berarti anda tidak dapat lagi menggunakan tautan mengakses tampilan, tetapi harus menggunakan pengajuan formulir dari sejenis (sebagai contoh tombol).</p>\n</section>\n<section id=\"is-no-longer-in-builtins\">\n<h4><code class=\"docutils literal notranslate\"><span class=\"pre\">_()</span></code> tidak lagi siap pakai<a class=\"heading-anchor\" href=\"#is-no-longer-in-builtins\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">_()</span></code> (obyek callable yang namanya adalah garis bawah tunggal) tidak lagi monkeypatch kedalam siap pakai -- yaitu, itu tidak lagi tersedia secara ajaib di setiap modul.</p>\n<p>Jika anda sebelumnya bergantung pada <code class=\"docutils literal notranslate\"><span class=\"pre\">_()</span></code> selalu menjadi hadir, anda harus sekarang secara eksplisit mengimpor <code class=\"docutils literal notranslate\"><span class=\"pre\">ugettext</span></code> atau <code class=\"docutils literal notranslate\"><span class=\"pre\">ugettext_lazy</span></code>, jika sesuai, dan namai itu menjadi <code class=\"docutils literal notranslate\"><span class=\"pre\">_</span></code> anda sendiri:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils.translation</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">ugettext</span> <span class=\"k\">as</span> <span class=\"n\">_</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"http-request-response-objects\">\n<h3>Obyek HTTP request/response<a class=\"heading-anchor\" href=\"#http-request-response-objects\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"dictionary-access-to-httprequest\">\n<h4>Akses kamus ke <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code><a class=\"heading-anchor\" href=\"#dictionary-access-to-httprequest\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Obyek <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> tidak lagi langsung mendukung akses gaya kamus; sebelumnya, kedua data <code class=\"docutils literal notranslate\"><span class=\"pre\">GET</span></code> dan <code class=\"docutils literal notranslate\"><span class=\"pre\">POST</span></code> langsung tersedia pada obyek <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> (sebagai contoh, anda dapat memeriksa untuk potongan dari formulir data dengan menggunakan <code class=\"docutils literal notranslate\"><span class=\"pre\">if</span> <span class=\"pre\">'some_form_key'</span> <span class=\"pre\">in</span> <span class=\"pre\">request</span></code> atau dengan membaca <code class=\"docutils literal notranslate\"><span class=\"pre\">request['some_form_key']</span></code>. Ini tidak lagi didukung; jika anda butuh akses untuk mengkombinasikan data <code class=\"docutils literal notranslate\"><span class=\"pre\">GET</span></code> dan <code class=\"docutils literal notranslate\"><span class=\"pre\">POST</span></code>, gunakan <code class=\"docutils literal notranslate\"><span class=\"pre\">request.REQUEST</span></code> sebagai gantinya.</p>\n<p>Itu sangat disarankan, bagaimanapun, bahwa anda selalu secara eksplisit mencari di kamus yang sesuai untuk jenis dari permintaan anda harapkan untuk menerima (<code class=\"docutils literal notranslate\"><span class=\"pre\">request.GET</span></code> or <code class=\"docutils literal notranslate\"><span class=\"pre\">request.POST</span></code>); bergantung pada gabungan kamus <code class=\"docutils literal notranslate\"><span class=\"pre\">request.REQUEST</span></code> dapat menutup data datang asli.</p>\n</section>\n<section id=\"accessing-httpresponse-headers\">\n<h4>Mengakses kepala <code class=\"docutils literal notranslate\"><span class=\"pre\">HTTPResponse</span></code><a class=\"heading-anchor\" href=\"#accessing-httpresponse-headers\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">django.http.HttpResponse.headers</span></code> telah dinamai kembali ke <code class=\"docutils literal notranslate\"><span class=\"pre\">_headers</span></code> dan <a class=\"reference internal\" href=\"/id/4.2/ref/request-response/#django.http.HttpResponse\" title=\"django.http.HttpResponse\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">HttpResponse</span></code></a> sekarang mendukung penahanan pemeriksaan secara langsung. Jadi gunakan <code class=\"docutils literal notranslate\"><span class=\"pre\">if</span> <span class=\"pre\">header</span> <span class=\"pre\">in</span> <span class=\"pre\">response:</span></code> daripada <code class=\"docutils literal notranslate\"><span class=\"pre\">if</span> <span class=\"pre\">header</span> <span class=\"pre\">in</span> <span class=\"pre\">response.headers:</span></code>.</p>\n</section>\n</section>\n<section id=\"generic-relations\">\n<h3>Hubungan umum<a class=\"heading-anchor\" href=\"#generic-relations\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"generic-relations-have-been-moved-out-of-core\">\n<h4>Hubungan umum telah dipindahkan keluar dari inti<a class=\"heading-anchor\" href=\"#generic-relations-have-been-moved-out-of-core\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Kelas-kelas hubungan umum -- <code class=\"docutils literal notranslate\"><span class=\"pre\">GenericForeignKey</span></code> dan <code class=\"docutils literal notranslate\"><span class=\"pre\">GenericRelation</span></code> -- telah dipindahkan kedalam modul <a class=\"reference internal\" href=\"/id/4.2/ref/contrib/contenttypes/#module-django.contrib.contenttypes\" title=\"django.contrib.contenttypes: Provides generic interface to installed models.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.contenttypes</span></code></a>.</p>\n</section>\n</section>\n<section id=\"testing\">\n<h3>Pengujian<a class=\"heading-anchor\" href=\"#testing\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"django-test-client-login-has-changed\">\n<h4>meth:django.test.Client.login telah berubah<a class=\"heading-anchor\" href=\"#django-test-client-login-has-changed\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Lama (0.96):</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.test</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">Client</span>\n\n<span class=\"n\">c</span> <span class=\"o\">=</span> <span class=\"n\">Client</span><span class=\"p\">()</span>\n<span class=\"n\">c</span><span class=\"o\">.</span><span class=\"n\">login</span><span class=\"p\">(</span><span class=\"s2\">&quot;/path/to/login&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;myuser&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;mypassword&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Baru (1.0):</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\"># ... same as above, but then:</span>\n<span class=\"n\">c</span><span class=\"o\">.</span><span class=\"n\">login</span><span class=\"p\">(</span><span class=\"n\">username</span><span class=\"o\">=</span><span class=\"s2\">&quot;myuser&quot;</span><span class=\"p\">,</span> <span class=\"n\">password</span><span class=\"o\">=</span><span class=\"s2\">&quot;mypassword&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"management-commands\">\n<h3>Pengelolaan perintah<a class=\"heading-anchor\" href=\"#management-commands\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"running-management-commands-from-your-code\">\n<h4>Menjalankan pengelolaan perintah dari kode anda<a class=\"heading-anchor\" href=\"#running-management-commands-from-your-code\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p><a class=\"reference internal\" href=\"/id/4.2/howto/custom-management-commands/#module-django.core.management\" title=\"django.core.management\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.core.management</span></code></a> telah direfaktor.</p>\n<p>Panggilan pada pengelolaan pelayanan di kode anda sekarang butuh untuk menggunakan <code class=\"docutils literal notranslate\"><span class=\"pre\">call_command</span></code>. Sebagai contoh, jika anda mempunyai beberapa percobaan yang memanggil flush dan load_data:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">management</span>\n\n<span class=\"n\">management</span><span class=\"o\">.</span><span class=\"n\">flush</span><span class=\"p\">(</span><span class=\"n\">verbosity</span><span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"n\">interactive</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"n\">management</span><span class=\"o\">.</span><span class=\"n\">load_data</span><span class=\"p\">([</span><span class=\"s2\">&quot;test_data&quot;</span><span class=\"p\">],</span> <span class=\"n\">verbosity</span><span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>...anda akan butuh merubah kdoe ini untuk dibaca:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">management</span>\n\n<span class=\"n\">management</span><span class=\"o\">.</span><span class=\"n\">call_command</span><span class=\"p\">(</span><span class=\"s2\">&quot;flush&quot;</span><span class=\"p\">,</span> <span class=\"n\">verbosity</span><span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"n\">interactive</span><span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n<span class=\"n\">management</span><span class=\"o\">.</span><span class=\"n\">call_command</span><span class=\"p\">(</span><span class=\"s2\">&quot;loaddata&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;test_data&quot;</span><span class=\"p\">,</span> <span class=\"n\">verbosity</span><span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"subcommands-must-now-precede-options\">\n<h4>Sub perintah sekarang harus mendahulukan pilihan<a class=\"heading-anchor\" href=\"#subcommands-must-now-precede-options\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">django-admin.py</span></code> dan <code class=\"docutils literal notranslate\"><span class=\"pre\">manage.py</span></code> sekarang membutuhkan sub perintah untuk mendahulukan pilihan. Jadi:</p>\n<div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>django-admin.py<span class=\"w\"> </span>--settings<span class=\"o\">=</span>foo.bar<span class=\"w\"> </span>runserver\n</code></pre></div>\n<p>...tidak lagi bekerja dan harus dirubah menjadi:</p>\n<div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>django-admin.py<span class=\"w\"> </span>runserver<span class=\"w\"> </span>--settings<span class=\"o\">=</span>foo.bar\n</code></pre></div>\n</section>\n</section>\n<section id=\"syndication\">\n<h3>Kongsi<a class=\"heading-anchor\" href=\"#syndication\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"feed-init-has-changed\">\n<h4><code class=\"docutils literal notranslate\"><span class=\"pre\">Feed.__init__</span></code> telah berubah<a class=\"heading-anchor\" href=\"#feed-init-has-changed\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>metode <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__()</span></code> dari kongsi kelas <code class=\"docutils literal notranslate\"><span class=\"pre\">Feed</span></code> kerangka kerja sekarang mengambil sebuah obyek <code class=\"docutils literal notranslate\"><span class=\"pre\">HttpRequest</span></code> sebagai parameter keduanya, daripada URL umpan. Ini mengizinkan kongsi kerangka kerja untuk bekerja tanpa membutuhkan kerangka kerja situs. Ini hanya mempengaruhi kode yang subkelas <code class=\"docutils literal notranslate\"><span class=\"pre\">Feed</span></code> dan menimpa metode <code class=\"docutils literal notranslate\"><span class=\"pre\">__init__()</span></code>, dan kode yang memanggil <code class=\"docutils literal notranslate\"><span class=\"pre\">Feed.__init__()</span></code> secara langsung.</p>\n</section>\n</section>\n<section id=\"data-structures\">\n<h3>Struktur data<a class=\"heading-anchor\" href=\"#data-structures\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"sorteddictfromlist-is-gone\">\n<h4>SortedDictFromList` telah pergi<a class=\"heading-anchor\" href=\"#sorteddictfromlist-is-gone\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p><code class=\"docutils literal notranslate\"><span class=\"pre\">django.newforms.forms.SortedDictFromList</span></code> telah dipindahkan. <code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils.datastructures.SortedDict</span></code> sekarang dapat membuat obyek dengan urutan dari tuple-tuple.</p>\n<p>Untuk memperbaharui kode anda:</p>\n<ol class=\"arabic simple\">\n<li><p>Gunakan <code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils.datastructures.SortedDict</span></code> dimanapun anda menggunakan <code class=\"docutils literal notranslate\"><span class=\"pre\">django.newforms.forms.SortedDictFromList</span></code>.</p></li>\n<li><p>Karena <code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils.datastructures.SortedDict.copy</span></code> tidak mengemblikan salinan dalam sebagai <code class=\"docutils literal notranslate\"><span class=\"pre\">SortedDictFromList.copy()</span></code> lakukan, anda akan butuh memperbaharui kode anda jika anda bergantung pada saliann dalam. Lakukan ini dengan menggunakan <code class=\"docutils literal notranslate\"><span class=\"pre\">copy.deepcopy</span></code> secara langsung.</p></li>\n</ol>\n</section>\n</section>\n<section id=\"database-backend-functions\">\n<h3>Fungsi basisdata backend<a class=\"heading-anchor\" href=\"#database-backend-functions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<section id=\"database-backend-functions-have-been-renamed\">\n<h4>Fungsi basisdata backend telah diubah namanya<a class=\"heading-anchor\" href=\"#database-backend-functions-have-been-renamed\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Hampir <em>semua</em> dari fungsi tingkatan backend basisdata telah dinamai kembali dan/atau ditempatkan kembali. Tidak ada dari ini didokumentasikan, tetapi anda akan butuh merubah kode anda jika anda sedang menggunakan tiap fungsi ini, semua dari yang berada di <a class=\"reference internal\" href=\"/id/4.2/topics/db/#module-django.db\" title=\"django.db\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.db</span></code></a>:</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p>Lama (0.96)</p></th>\n<th class=\"head\"><p>Baru (1.0)</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.get_autoinc_sql</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.ops.autoinc_sql</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.get_date_extract_sql</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.ops.date_extract_sql</span></code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.get_date_trunc_sql</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.ops.date_trunc_sql</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.get_datetime_cast_sql</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.ops.datetime_cast_sql</span></code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.get_deferrable_sql</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.ops.deferrable_sql</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.get_drop_foreignkey_sql</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.ops.drop_foreignkey_sql</span></code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.get_fulltext_search_sql</span></code></p></td>\n<td><p>connection.ops.fulltext_search_sql`</p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.get_last_insert_id</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.ops.last_insert_id</span></code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.get_limit_offset_sql</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.ops.limit_offset_sql</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.get_max_name_length</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.ops.max_name_length</span></code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.get_pk_default_value</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.ops.pk_default_value</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.get_random_function_sql</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.ops.random_function_sql</span></code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.get_sql_flush</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.ops.sql_flush</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.get_sql_sequence_reset</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.ops.sequence_reset_sql</span></code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.get_start_transaction_sql</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.ops.start_transaction_sql</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.get_tablespace_sql</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.ops.tablespace_sql</span></code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.quote_name</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.ops.quote_name</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.get_query_set_class</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.ops.query_set_class</span></code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.get_field_cast_sql</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.ops.field_cast_sql</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.get_drop_sequence</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.ops.drop_sequence_sql</span></code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.OPERATOR_MAPPING</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.operators</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.allows_group_by_ordinal</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.features.allows_group_by_ordinal</span></code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.allows_unique_and_pk</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.features.allows_unique_and_pk</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.autoindexes_primary_keys</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.features.autoindexes_primary_keys</span></code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.needs_datetime_string_cast</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.features.needs_datetime_string_cast</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.needs_upper_for_iops</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.features.needs_upper_for_iops</span></code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.supports_constraints</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.features.supports_constraints</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.supports_tablespaces</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.features.supports_tablespaces</span></code></p></td>\n</tr>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.uses_case_insensitive_names</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.features.uses_case_insensitive_names</span></code></p></td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">backend.uses_custom_queryset</span></code></p></td>\n<td><p><code class=\"docutils literal notranslate\"><span class=\"pre\">connection.features.uses_custom_queryset</span></code></p></td>\n</tr>\n</tbody>\n</table>\n</div>\n</section>\n</section>\n</section>","rootId":"porting-your-apps-from-django-0-96-to-1-0","toc":[{"title":"Perubahan umum","anchor":"common-changes","children":[{"title":"Gunakan Unicode","anchor":"use-unicode","children":[]},{"title":"Model","anchor":"models","children":[{"title":"Namai kembali maxlength ke max_length","anchor":"rename-maxlength-to-max-length","children":[]},{"title":"Ganti __str__ dengan __unicode__","anchor":"replace-str-with-unicode","children":[]},{"title":"Pindahkan prepopulated_from","anchor":"remove-prepopulated-from","children":[]},{"title":"Pindahkan core","anchor":"remove-core","children":[]},{"title":"Ganti class Admin: dengan admin.py","anchor":"replace-class-admin-with-admin-py","children":[]},{"title":"Contoh","anchor":"example","children":[]}]},{"title":"Admin","anchor":"the-admin","children":[{"title":"Gunakan sintaksis berderet yang baru","anchor":"use-new-inline-syntax","children":[]},{"title":"Sederhanakan fields, atau gunakan fieldsets","anchor":"simplify-fields-or-use-fieldsets","children":[]}]},{"title":"URL","anchor":"urls","children":[{"title":"Perbaharui akar urls.py anda.","anchor":"update-your-root-urls-py","children":[]}]},{"title":"View","anchor":"views","children":[{"title":"Gunakan django.forms sebagai gantinya newforms","anchor":"use-django-forms-instead-of-newforms","children":[]},{"title":"Menangani berkas terunggah menggunakan API baru","anchor":"handle-uploaded-files-using-the-new-api","children":[]},{"title":"Bekerja dengan bidang berkas menggunakan API baru","anchor":"work-with-file-fields-using-the-new-api","children":[]},{"title":"Gunakan Paginator daripada ObjectPaginator","anchor":"use-paginator-instead-of-objectpaginator","children":[]}]},{"title":"Templat","anchor":"templates","children":[{"title":"Belajar mencintai pelolosan otomatis","anchor":"learn-to-love-autoescaping","children":[]}]}]},{"title":"Perubahan kurang umum","anchor":"less-common-changes","children":[{"title":"Sinyal","anchor":"signals","children":[]},{"title":"Komentar","anchor":"comments","children":[]},{"title":"Tag templat","anchor":"template-tags","children":[{"title":"Etiket spaceless","anchor":"spaceless-tag","children":[]}]},{"title":"Rasa lokal","anchor":"local-flavors","children":[{"title":"Rasa lokal U.S","anchor":"u-s-local-flavor","children":[]}]},{"title":"Sesi","anchor":"sessions","children":[{"title":"Mendapatkan kunci sesi baru","anchor":"getting-a-new-session-key","children":[]}]},{"title":"Perlengkapan","anchor":"fixtures","children":[{"title":"Memuat sebuah baris yang tidak memanggil save()","anchor":"loading-a-row-no-longer-calls-save","children":[]}]},{"title":"Pengaturan","anchor":"settings","children":[{"title":"Pengecualian terbaik","anchor":"better-exceptions","children":[]},{"title":"LOGIN_URL telah dipindahkan","anchor":"login-url-has-moved","children":[]},{"title":"Perilaku APPEND_SLASH telah diperbaharui","anchor":"append-slash-behavior-has-been-updated","children":[]}]},{"title":"Perubahan model kecil","anchor":"smaller-model-changes","children":[{"title":"Pengecualian berbeda dari get()","anchor":"different-exception-from-get","children":[]},{"title":"LazyDate telah dinyalakan","anchor":"lazydate-has-been-fired","children":[]},{"title":"DecimalField adalah baru, dan FloatField sekarang float tepat.","anchor":"decimalfield-is-new-and-floatfield-is-now-a-proper-float","children":[]}]},{"title":"Internasionalisasi","anchor":"internationalization","children":[{"title":"django.views.i18n.set_language() sekarang membutuhkan permintaan POST","anchor":"django-views-i18n-set-language-now-requires-a-post-request","children":[]},{"title":"_() tidak lagi siap pakai","anchor":"is-no-longer-in-builtins","children":[]}]},{"title":"Obyek HTTP request/response","anchor":"http-request-response-objects","children":[{"title":"Akses kamus ke HttpRequest","anchor":"dictionary-access-to-httprequest","children":[]},{"title":"Mengakses kepala HTTPResponse","anchor":"accessing-httpresponse-headers","children":[]}]},{"title":"Hubungan umum","anchor":"generic-relations","children":[{"title":"Hubungan umum telah dipindahkan keluar dari inti","anchor":"generic-relations-have-been-moved-out-of-core","children":[]}]},{"title":"Pengujian","anchor":"testing","children":[{"title":"meth:django.test.Client.login telah berubah","anchor":"django-test-client-login-has-changed","children":[]}]},{"title":"Pengelolaan perintah","anchor":"management-commands","children":[{"title":"Menjalankan pengelolaan perintah dari kode anda","anchor":"running-management-commands-from-your-code","children":[]},{"title":"Sub perintah sekarang harus mendahulukan pilihan","anchor":"subcommands-must-now-precede-options","children":[]}]},{"title":"Kongsi","anchor":"syndication","children":[{"title":"Feed.__init__ telah berubah","anchor":"feed-init-has-changed","children":[]}]},{"title":"Struktur data","anchor":"data-structures","children":[{"title":"SortedDictFromList` telah pergi","anchor":"sorteddictfromlist-is-gone","children":[]}]},{"title":"Fungsi basisdata backend","anchor":"database-backend-functions","children":[{"title":"Fungsi basisdata backend telah diubah namanya","anchor":"database-backend-functions-have-been-renamed","children":[]}]}]}],"breadcrumbs":[{"docname":"releases/index","title":"Catatan terbitan","url":"/id/4.2/releases/"},{"docname":"releases/1.0","title":"Catatan terbitan Django 1.0","url":"/id/4.2/releases/1.0/"}],"prev":{"docname":"releases/1.0","title":"Catatan terbitan Django 1.0","url":"/id/4.2/releases/1.0/"},"next":{"docname":"releases/0.96","title":"Catatan terbitan Django versi 0.96","url":"/id/4.2/releases/0.96/"},"formats":{"html":"/id/4.2/releases/1.0-porting-guide/","markdown":"/id/4.2/releases/1.0-porting-guide.md","json":"/id/4.2/releases/1.0-porting-guide.json"},"source":"https://github.com/django/django/blob/stable/4.2.x/docs/releases/1.0-porting-guide.txt","official":"https://docs.djangoproject.com/id/4.2/releases/1.0-porting-guide/","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","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}