{"title":"API  _meta model","version":"2.1","locale":"id","docname":"ref/models/meta","url":"/id/2.1/ref/models/meta/","canonical":"https://djangodocs.dev/id/2.1/ref/models/meta/","summary":"The model _meta API is at the core of the Django ORM. It enables other parts of the system such as lookups, queries, forms, and the admin to understand the…","html":"<span id=\"model-meta-api\"></span><h1>API  <code class=\"docutils literal notranslate\">_meta</code> model<a class=\"heading-anchor\" href=\"#module-django.db.models.options\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.options.Options\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Options</span><a class=\"heading-anchor\" href=\"#django.db.models.options.Options\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>The model <code class=\"docutils literal notranslate\">_meta</code> API is at the core of the Django ORM. It enables other\nparts of the system such as lookups, queries, forms, and the admin to\nunderstand the capabilities of each model. The API is accessible through\nthe <code class=\"docutils literal notranslate\">_meta</code> attribute of each model class, which is an instance of an\n<code class=\"docutils literal notranslate\">django.db.models.options.Options</code> object.</p>\n<p>Metode-metode yang itu sediakan dapat digunakan untuk:</p>\n<ul class=\"simple\">\n<li><p>Mengambil semua contoh-contoh bidang dari sebuah model</p></li>\n<li><p>Mengambil contoh bidang tunggal dari model berdasarkan nama</p></li>\n</ul>\n<section id=\"field-access-api\">\n<span id=\"model-meta-field-api\"></span><h2>API mengakses bidang<a class=\"heading-anchor\" href=\"#field-access-api\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"retrieving-a-single-field-instance-of-a-model-by-name\">\n<h3>Retrieving a single field instance of a model by name<a class=\"heading-anchor\" href=\"#retrieving-a-single-field-instance-of-a-model-by-name\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.options.Options.get_field\">\n<span class=\"sig-prename descclassname\">Options.</span><span class=\"sig-name descname\">get_field</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">field_name</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.options.Options.get_field\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns the field instance given a name of a field.</p>\n<p><code class=\"docutils literal notranslate\">field_name</code> can be the name of a field on the model, a field\non an abstract or inherited model, or a field defined on another\nmodel that points to the model. In the latter case, the <code class=\"docutils literal notranslate\">field_name</code>\nwill be (in order of preference) the <a class=\"reference internal\" href=\"/id/2.1/ref/models/fields/#django.db.models.ForeignKey.related_query_name\" title=\"django.db.models.ForeignKey.related_query_name\"><code class=\"xref py py-attr docutils literal notranslate\">related_query_name</code></a>\nset by the user, the <a class=\"reference internal\" href=\"/id/2.1/ref/models/fields/#django.db.models.ForeignKey.related_name\" title=\"django.db.models.ForeignKey.related_name\"><code class=\"xref py py-attr docutils literal notranslate\">related_name</code></a> set by the user, or\nthe name automatically generated by Django.</p>\n<p><a class=\"reference internal\" href=\"/id/2.1/ref/models/fields/#django.db.models.Field.hidden\" title=\"django.db.models.Field.hidden\"><code class=\"xref py py-attr docutils literal notranslate\">Hidden fields</code></a> tidak dapat diambil berdasarkan nama.</p>\n<p>Jika sebuah bidang dengan nama diberikan tidak ditemukan sebuah pengecualian <a class=\"reference internal\" href=\"/id/2.1/ref/exceptions/#django.core.exceptions.FieldDoesNotExist\" title=\"django.core.exceptions.FieldDoesNotExist\"><code class=\"xref py py-class docutils literal notranslate\">FieldDoesNotExist</code></a> akan dimunculkan.</p>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.contrib.auth.models</span> <span class=\"kn\">import</span> User\n\n<span class=\"go\"># A field on the model</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>User<span class=\"o\">.</span>_meta<span class=\"o\">.</span>get_field<span class=\"p\">(</span><span class=\"s1\">&#39;username&#39;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;django.db.models.fields.CharField: username&gt;</span>\n\n<span class=\"go\"># A field from another model that has a relation with the current model</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>User<span class=\"o\">.</span>_meta<span class=\"o\">.</span>get_field<span class=\"p\">(</span><span class=\"s1\">&#39;logentry&#39;</span><span class=\"p\">)</span>\n<span class=\"go\">&lt;ManyToOneRel: admin.logentry&gt;</span>\n\n<span class=\"go\"># A non existent field</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>User<span class=\"o\">.</span>_meta<span class=\"o\">.</span>get_field<span class=\"p\">(</span><span class=\"s1\">&#39;does_not_exist&#39;</span><span class=\"p\">)</span>\n<span class=\"gt\">Traceback (most recent call last):</span>\n    <span class=\"o\">...</span>\n<span class=\"gr\">FieldDoesNotExist</span>: User has no field named &#39;does_not_exist&#39;\n</code></pre></div>\n</dd></dl>\n\n</section>\n<section id=\"retrieving-all-field-instances-of-a-model\">\n<h3>Mengambil semua instance bidang dari sebuah model<a class=\"heading-anchor\" href=\"#retrieving-all-field-instances-of-a-model\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.options.Options.get_fields\">\n<span class=\"sig-prename descclassname\">Options.</span><span class=\"sig-name descname\">get_fields</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">include_parents<span class=\"o\">=</span><span class=\"default_value\">True</span></em>, <em class=\"sig-param\">include_hidden<span class=\"o\">=</span><span class=\"default_value\">False</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.options.Options.get_fields\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Returns a tuple of fields associated with a model. <code class=\"docutils literal notranslate\">get_fields()</code> accepts\ntwo parameters that can be used to control which fields are returned:</p>\n<dl class=\"simple\">\n<dt><code class=\"docutils literal notranslate\">include_parents</code></dt><dd><p><code class=\"docutils literal notranslate\">True</code> by default. Recursively includes fields defined on parent\nclasses. If set to <code class=\"docutils literal notranslate\">False</code>, <code class=\"docutils literal notranslate\">get_fields()</code> will only search for\nfields declared directly on the current model. Fields from models that\ndirectly inherit from abstract models or proxy classes are considered\nto be local, not on the parent.</p>\n</dd>\n<dt><code class=\"docutils literal notranslate\">include_hidden</code></dt><dd><p><code class=\"docutils literal notranslate\">False</code> by default. If set to <code class=\"docutils literal notranslate\">True</code>, <code class=\"docutils literal notranslate\">get_fields()</code> will include\nfields that are used to back other field's functionality. This will\nalso include any fields that have a <code class=\"docutils literal notranslate\">related_name</code> (such\nas <a class=\"reference internal\" href=\"/id/2.1/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a>, or\n<a class=\"reference internal\" href=\"/id/2.1/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a>) that start with a &quot;+&quot;.</p>\n</dd>\n</dl>\n<div class=\"code-block\" data-language=\"python\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.contrib.auth.models</span> <span class=\"kn\">import</span> User\n<span class=\"gp\">&gt;&gt;&gt; </span>User<span class=\"o\">.</span>_meta<span class=\"o\">.</span>get_fields<span class=\"p\">()</span>\n<span class=\"go\">(&lt;ManyToOneRel: admin.logentry&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.AutoField: id&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.CharField: password&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.DateTimeField: last_login&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.BooleanField: is_superuser&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.CharField: username&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.CharField: first_name&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.CharField: last_name&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.EmailField: email&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.BooleanField: is_staff&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.BooleanField: is_active&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.DateTimeField: date_joined&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.related.ManyToManyField: groups&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.related.ManyToManyField: user_permissions&gt;)</span>\n\n<span class=\"go\"># Also include hidden fields.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>User<span class=\"o\">.</span>_meta<span class=\"o\">.</span>get_fields<span class=\"p\">(</span>include_hidden<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n<span class=\"go\">(&lt;ManyToOneRel: auth.user_groups&gt;,</span>\n<span class=\"go\"> &lt;ManyToOneRel: auth.user_user_permissions&gt;,</span>\n<span class=\"go\"> &lt;ManyToOneRel: admin.logentry&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.AutoField: id&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.CharField: password&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.DateTimeField: last_login&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.BooleanField: is_superuser&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.CharField: username&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.CharField: first_name&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.CharField: last_name&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.EmailField: email&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.BooleanField: is_staff&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.BooleanField: is_active&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.DateTimeField: date_joined&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.related.ManyToManyField: groups&gt;,</span>\n<span class=\"go\"> &lt;django.db.models.fields.related.ManyToManyField: user_permissions&gt;)</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"migrating-from-the-old-api\">\n<span id=\"migrating-old-meta-api\"></span><h2>Berpindah dari API lama<a class=\"heading-anchor\" href=\"#migrating-from-the-old-api\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>As part of the formalization of the <code class=\"docutils literal notranslate\">Model._meta</code> API (from the\n<a class=\"reference internal\" href=\"#django.db.models.options.Options\" title=\"django.db.models.options.Options\"><code class=\"xref py py-class docutils literal notranslate\">django.db.models.options.Options</code></a> class), a number of methods and\nproperties have been deprecated and will be removed in Django 1.10.</p>\n<p>These old APIs can be replicated by either:</p>\n<ul class=\"simple\">\n<li><p>invoking <a class=\"reference internal\" href=\"#django.db.models.options.Options.get_field\" title=\"django.db.models.options.Options.get_field\"><code class=\"xref py py-meth docutils literal notranslate\">Options.get_field()</code></a>, or;</p></li>\n<li><p>invoking <a class=\"reference internal\" href=\"#django.db.models.options.Options.get_fields\" title=\"django.db.models.options.Options.get_fields\"><code class=\"xref py py-meth docutils literal notranslate\">Options.get_fields()</code></a> to retrieve a list of all\nfields, and then filtering this list using the <a class=\"reference internal\" href=\"/id/2.1/ref/models/fields/#model-field-attributes\"><span class=\"std std-ref\">field attributes</span></a> that describe (or retrieve, in the case of\n<code class=\"docutils literal notranslate\">_with_model</code> variants) the properties of the desired fields.</p></li>\n</ul>\n<p>Although it's possible to make strictly equivalent replacements of the old\nmethods, that might not be the best approach. Taking the time to refactor any\nfield loops to make better use of the new API - and possibly include fields\nthat were previously excluded - will almost certainly result in better code.</p>\n<p>Assuming you have a model named <code class=\"docutils literal notranslate\">MyModel</code>, the following substitutions\ncan be made to convert your code to the new API:</p>\n<ul>\n<li><p><code class=\"docutils literal notranslate\">MyModel._meta.get_field(name)</code> menjadi:</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>f <span class=\"o\">=</span> MyModel<span class=\"o\">.</span>_meta<span class=\"o\">.</span>get_field<span class=\"p\">(</span>name<span class=\"p\">)</span>\n</code></pre></div>\n<p>kemudian periksa jika:</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">f.auto_created == False</code>, because the new <code class=\"docutils literal notranslate\">get_field()</code>\nAPI will find &quot;reverse&quot; relations, and:</p></li>\n<li><p><code class=\"docutils literal notranslate\">f.is_relation and f.related_model is None</code>, because the new\n<code class=\"docutils literal notranslate\">get_field()</code> API will find\n<a class=\"reference internal\" href=\"/id/2.1/ref/contrib/contenttypes/#django.contrib.contenttypes.fields.GenericForeignKey\" title=\"django.contrib.contenttypes.fields.GenericForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">GenericForeignKey</code></a> relations.</p></li>\n</ul>\n</li>\n<li><p><code class=\"docutils literal notranslate\">MyModel._meta.get_field_by_name(name)</code> returns a tuple of these four\nvalues with the following replacements:</p>\n<ul>\n<li><p><code class=\"docutils literal notranslate\">field</code> dapat ditemukan oleh <code class=\"docutils literal notranslate\">MyModel._meta.get_field(name)</code></p></li>\n<li><p><code class=\"docutils literal notranslate\">model</code> dapat ditemukan melalui atribut  <a class=\"reference internal\" href=\"/id/2.1/ref/models/fields/#django.db.models.Field.model\" title=\"django.db.models.Field.model\"><code class=\"xref py py-attr docutils literal notranslate\">model</code></a> pada bidang.</p></li>\n<li><p><code class=\"docutils literal notranslate\">direct</code> dapat ditemukan oleh: <code class=\"docutils literal notranslate\">not field.auto_created or field.concrete</code></p>\n<p>The <a class=\"reference internal\" href=\"/id/2.1/ref/models/fields/#django.db.models.Field.auto_created\" title=\"django.db.models.Field.auto_created\"><code class=\"xref py py-attr docutils literal notranslate\">auto_created</code></a> check excludes\nall &quot;forward&quot; and &quot;reverse&quot; relations that are created by Django, but\nthis also includes <code class=\"docutils literal notranslate\">AutoField</code> and <code class=\"docutils literal notranslate\">OneToOneField</code> on proxy models.\nWe avoid filtering out these attributes using the\n<a class=\"reference internal\" href=\"/id/2.1/ref/models/fields/#django.db.models.Field.concrete\" title=\"django.db.models.Field.concrete\"><code class=\"xref py py-attr docutils literal notranslate\">concrete</code></a> attribute.</p>\n</li>\n<li><p><code class=\"docutils literal notranslate\">m2m</code> dapat ditemukan melalui atribut <a class=\"reference internal\" href=\"/id/2.1/ref/models/fields/#django.db.models.Field.many_to_many\" title=\"django.db.models.Field.many_to_many\"><code class=\"xref py py-attr docutils literal notranslate\">many_to_many</code></a> pada bidang.</p></li>\n</ul>\n</li>\n<li><p><code class=\"docutils literal notranslate\">MyModel._meta.get_fields_with_model()</code> menjadi:</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=\"p\">[</span>\n    <span class=\"p\">(</span>f<span class=\"p\">,</span> f<span class=\"o\">.</span>model <span class=\"k\">if</span> f<span class=\"o\">.</span>model <span class=\"o\">!=</span> MyModel <span class=\"k\">else</span> <span class=\"kc\">None</span><span class=\"p\">)</span>\n    <span class=\"k\">for</span> f <span class=\"ow\">in</span> MyModel<span class=\"o\">.</span>_meta<span class=\"o\">.</span>get_fields<span class=\"p\">()</span>\n    <span class=\"k\">if</span> <span class=\"ow\">not</span> f<span class=\"o\">.</span>is_relation\n        <span class=\"ow\">or</span> f<span class=\"o\">.</span>one_to_one\n        <span class=\"ow\">or</span> <span class=\"p\">(</span>f<span class=\"o\">.</span>many_to_one <span class=\"ow\">and</span> f<span class=\"o\">.</span>related_model<span class=\"p\">)</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p><code class=\"docutils literal notranslate\">MyModel._meta.get_concrete_fields_with_model()</code> menjadi:</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=\"p\">[</span>\n    <span class=\"p\">(</span>f<span class=\"p\">,</span> f<span class=\"o\">.</span>model <span class=\"k\">if</span> f<span class=\"o\">.</span>model <span class=\"o\">!=</span> MyModel <span class=\"k\">else</span> <span class=\"kc\">None</span><span class=\"p\">)</span>\n    <span class=\"k\">for</span> f <span class=\"ow\">in</span> MyModel<span class=\"o\">.</span>_meta<span class=\"o\">.</span>get_fields<span class=\"p\">()</span>\n    <span class=\"k\">if</span> f<span class=\"o\">.</span>concrete <span class=\"ow\">and</span> <span class=\"p\">(</span>\n        <span class=\"ow\">not</span> f<span class=\"o\">.</span>is_relation\n        <span class=\"ow\">or</span> f<span class=\"o\">.</span>one_to_one\n        <span class=\"ow\">or</span> <span class=\"p\">(</span>f<span class=\"o\">.</span>many_to_one <span class=\"ow\">and</span> f<span class=\"o\">.</span>related_model<span class=\"p\">)</span>\n    <span class=\"p\">)</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p><code class=\"docutils literal notranslate\">MyModel._meta.get_m2m_with_model()</code> menjadi:</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=\"p\">[</span>\n    <span class=\"p\">(</span>f<span class=\"p\">,</span> f<span class=\"o\">.</span>model <span class=\"k\">if</span> f<span class=\"o\">.</span>model <span class=\"o\">!=</span> MyModel <span class=\"k\">else</span> <span class=\"kc\">None</span><span class=\"p\">)</span>\n    <span class=\"k\">for</span> f <span class=\"ow\">in</span> MyModel<span class=\"o\">.</span>_meta<span class=\"o\">.</span>get_fields<span class=\"p\">()</span>\n    <span class=\"k\">if</span> f<span class=\"o\">.</span>many_to_many <span class=\"ow\">and</span> <span class=\"ow\">not</span> f<span class=\"o\">.</span>auto_created\n<span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p><code class=\"docutils literal notranslate\">MyModel._meta.get_all_related_objects()</code> menjadi:</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=\"p\">[</span>\n    f <span class=\"k\">for</span> f <span class=\"ow\">in</span> MyModel<span class=\"o\">.</span>_meta<span class=\"o\">.</span>get_fields<span class=\"p\">()</span>\n    <span class=\"k\">if</span> <span class=\"p\">(</span>f<span class=\"o\">.</span>one_to_many <span class=\"ow\">or</span> f<span class=\"o\">.</span>one_to_one<span class=\"p\">)</span>\n    <span class=\"ow\">and</span> f<span class=\"o\">.</span>auto_created <span class=\"ow\">and</span> <span class=\"ow\">not</span> f<span class=\"o\">.</span>concrete\n<span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p><code class=\"docutils literal notranslate\">MyModel._meta.get_all_related_objects_with_model()</code> menjadi:</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=\"p\">[</span>\n    <span class=\"p\">(</span>f<span class=\"p\">,</span> f<span class=\"o\">.</span>model <span class=\"k\">if</span> f<span class=\"o\">.</span>model <span class=\"o\">!=</span> MyModel <span class=\"k\">else</span> <span class=\"kc\">None</span><span class=\"p\">)</span>\n    <span class=\"k\">for</span> f <span class=\"ow\">in</span> MyModel<span class=\"o\">.</span>_meta<span class=\"o\">.</span>get_fields<span class=\"p\">()</span>\n    <span class=\"k\">if</span> <span class=\"p\">(</span>f<span class=\"o\">.</span>one_to_many <span class=\"ow\">or</span> f<span class=\"o\">.</span>one_to_one<span class=\"p\">)</span>\n    <span class=\"ow\">and</span> f<span class=\"o\">.</span>auto_created <span class=\"ow\">and</span> <span class=\"ow\">not</span> f<span class=\"o\">.</span>concrete\n<span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p><code class=\"docutils literal notranslate\">MyModel._meta.get_all_related_many_to_many_objects()</code> menjadi:</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=\"p\">[</span>\n    f <span class=\"k\">for</span> f <span class=\"ow\">in</span> MyModel<span class=\"o\">.</span>_meta<span class=\"o\">.</span>get_fields<span class=\"p\">(</span>include_hidden<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n    <span class=\"k\">if</span> f<span class=\"o\">.</span>many_to_many <span class=\"ow\">and</span> f<span class=\"o\">.</span>auto_created\n<span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p><code class=\"docutils literal notranslate\">MyModel._meta.get_all_related_m2m_objects_with_model()</code> menjadi:</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=\"p\">[</span>\n    <span class=\"p\">(</span>f<span class=\"p\">,</span> f<span class=\"o\">.</span>model <span class=\"k\">if</span> f<span class=\"o\">.</span>model <span class=\"o\">!=</span> MyModel <span class=\"k\">else</span> <span class=\"kc\">None</span><span class=\"p\">)</span>\n    <span class=\"k\">for</span> f <span class=\"ow\">in</span> MyModel<span class=\"o\">.</span>_meta<span class=\"o\">.</span>get_fields<span class=\"p\">(</span>include_hidden<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n    <span class=\"k\">if</span> f<span class=\"o\">.</span>many_to_many <span class=\"ow\">and</span> f<span class=\"o\">.</span>auto_created\n<span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p><code class=\"docutils literal notranslate\">MyModel._meta.get_all_field_names()</code> menjadi:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">itertools</span> <span class=\"kn\">import</span> chain\n<span class=\"nb\">list</span><span class=\"p\">(</span><span class=\"nb\">set</span><span class=\"p\">(</span>chain<span class=\"o\">.</span>from_iterable<span class=\"p\">(</span>\n    <span class=\"p\">(</span>field<span class=\"o\">.</span>name<span class=\"p\">,</span> field<span class=\"o\">.</span>attname<span class=\"p\">)</span> <span class=\"k\">if</span> <span class=\"nb\">hasattr</span><span class=\"p\">(</span>field<span class=\"p\">,</span> <span class=\"s1\">&#39;attname&#39;</span><span class=\"p\">)</span> <span class=\"k\">else</span> <span class=\"p\">(</span>field<span class=\"o\">.</span>name<span class=\"p\">,)</span>\n    <span class=\"k\">for</span> field <span class=\"ow\">in</span> MyModel<span class=\"o\">.</span>_meta<span class=\"o\">.</span>get_fields<span class=\"p\">()</span>\n    <span class=\"c1\"># For complete backwards compatibility, you may want to exclude</span>\n    <span class=\"c1\"># GenericForeignKey from the results.</span>\n    <span class=\"k\">if</span> <span class=\"ow\">not</span> <span class=\"p\">(</span>field<span class=\"o\">.</span>many_to_one <span class=\"ow\">and</span> field<span class=\"o\">.</span>related_model <span class=\"ow\">is</span> <span class=\"kc\">None</span><span class=\"p\">)</span>\n<span class=\"p\">)))</span>\n</code></pre></div>\n<p>This provides a 100% backwards compatible replacement, ensuring that both\nfield names and attribute names <code class=\"docutils literal notranslate\">ForeignKey</code>s are included, but fields\nassociated with <code class=\"docutils literal notranslate\">GenericForeignKey</code>s are not. A simpler version would be:</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=\"p\">[</span>f<span class=\"o\">.</span>name <span class=\"k\">for</span> f <span class=\"ow\">in</span> MyModel<span class=\"o\">.</span>_meta<span class=\"o\">.</span>get_fields<span class=\"p\">()]</span>\n</code></pre></div>\n<p>Selagi ini tidak 100% sesuai kebelakang, itu mungkin cukup di banyak keadaan.</p>\n</li>\n</ul>\n</section>","rootId":"module-django.db.models.options","toc":[{"title":"API mengakses bidang","anchor":"field-access-api","children":[{"title":"Retrieving a single field instance of a model by name","anchor":"retrieving-a-single-field-instance-of-a-model-by-name","children":[]},{"title":"Mengambil semua instance bidang dari sebuah model","anchor":"retrieving-all-field-instances-of-a-model","children":[]}]},{"title":"Berpindah dari API lama","anchor":"migrating-from-the-old-api","children":[]}],"breadcrumbs":[{"docname":"ref/index","title":"Acuan API","url":"/id/2.1/ref/"},{"docname":"ref/models/index","title":"Model","url":"/id/2.1/ref/models/"}],"prev":{"docname":"ref/models/indexes","title":"Acuan index model","url":"/id/2.1/ref/models/indexes/"},"next":{"docname":"ref/models/relations","title":"Acuan obyek terkait","url":"/id/2.1/ref/models/relations/"},"formats":{"html":"/id/2.1/ref/models/meta/","markdown":"/id/2.1/ref/models/meta.md","json":"/id/2.1/ref/models/meta.json"},"source":"https://github.com/django/django/blob/stable/2.1.x/docs/ref/models/meta.txt","official":"https://docs.djangoproject.com/id/2.1/ref/models/meta/","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","pt-br","ko","es","el","pl"]}