{"title":"API  _meta model","version":"2.0","locale":"id","docname":"ref/models/meta","url":"/id/2.0/ref/models/meta/","canonical":"https://djangodocs.dev/id/2.0/ref/models/meta/","summary":"class Options Link to this definition # The model _meta API is at the core of the Django ORM. It enables other parts of the system such as lookups, queries, forms,…","html":"<span id=\"model-meta-api\"></span><h1>API  <code class=\"docutils literal notranslate\"><span class=\"pre\">_meta</span></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\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">Options</span></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\"><span class=\"pre\">_meta</span></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\"><span class=\"pre\">_meta</span></code> attribute of each model class, which is an instance of an\n<code class=\"docutils literal notranslate\"><span class=\"pre\">django.db.models.options.Options</span></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\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_field</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">field_name</span></span></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\"><span class=\"pre\">field_name</span></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\"><span class=\"pre\">field_name</span></code>\nwill be the <code class=\"docutils literal notranslate\"><span class=\"pre\">related_name</span></code> defined by the user or the name automatically\ngenerated by Django itself.</p>\n<p><a class=\"reference internal\" href=\"/id/2.0/ref/models/fields/#django.db.models.Field.hidden\" title=\"django.db.models.Field.hidden\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">Hidden</span> <span class=\"pre\">fields</span></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.0/ref/exceptions/#django.core.exceptions.FieldDoesNotExist\" title=\"django.core.exceptions.FieldDoesNotExist\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">FieldDoesNotExist</span></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=\"w\"> </span><span class=\"nn\">django.contrib.auth.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">User</span>\n\n<span class=\"go\"># A field on the model</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">User</span><span class=\"o\">.</span><span class=\"n\">_meta</span><span class=\"o\">.</span><span class=\"n\">get_field</span><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><span class=\"n\">User</span><span class=\"o\">.</span><span class=\"n\">_meta</span><span class=\"o\">.</span><span class=\"n\">get_field</span><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><span class=\"n\">User</span><span class=\"o\">.</span><span class=\"n\">_meta</span><span class=\"o\">.</span><span class=\"n\">get_field</span><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=\"w\">    </span><span class=\"o\">...</span>\n<span class=\"gr\">FieldDoesNotExist</span>: <span class=\"n\">User has no field named &#39;does_not_exist&#39;</span>\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\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_fields</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">include_parents</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">True</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">include_hidden</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.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\"><span class=\"pre\">get_fields()</span></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\"><span class=\"pre\">include_parents</span></code></dt><dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> by default. Recursively includes fields defined on parent\nclasses. If set to <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">get_fields()</span></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\"><span class=\"pre\">include_hidden</span></code></dt><dd><p><code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code> by default. If set to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">get_fields()</span></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\"><span class=\"pre\">related_name</span></code> (such\nas <a class=\"reference internal\" href=\"/id/2.0/ref/models/fields/#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code></a>, or\n<a class=\"reference internal\" href=\"/id/2.0/ref/models/fields/#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></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=\"w\"> </span><span class=\"nn\">django.contrib.auth.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">User</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">User</span><span class=\"o\">.</span><span class=\"n\">_meta</span><span class=\"o\">.</span><span class=\"n\">get_fields</span><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><span class=\"n\">User</span><span class=\"o\">.</span><span class=\"n\">_meta</span><span class=\"o\">.</span><span class=\"n\">get_fields</span><span class=\"p\">(</span><span class=\"n\">include_hidden</span><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\"><span class=\"pre\">Model._meta</span></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\"><span class=\"pre\">django.db.models.options.Options</span></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\"><span class=\"pre\">Options.get_field()</span></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\"><span class=\"pre\">Options.get_fields()</span></code></a> to retrieve a list of all\nfields, and then filtering this list using the <a class=\"reference internal\" href=\"/id/2.0/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\"><span class=\"pre\">_with_model</span></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\"><span class=\"pre\">MyModel</span></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\"><span class=\"pre\">MyModel._meta.get_field(name)</span></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=\"n\">f</span> <span class=\"o\">=</span> <span class=\"n\">MyModel</span><span class=\"o\">.</span><span class=\"n\">_meta</span><span class=\"o\">.</span><span class=\"n\">get_field</span><span class=\"p\">(</span><span class=\"n\">name</span><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\"><span class=\"pre\">f.auto_created</span> <span class=\"pre\">==</span> <span class=\"pre\">False</span></code>, because the new <code class=\"docutils literal notranslate\"><span class=\"pre\">get_field()</span></code>\nAPI will find &quot;reverse&quot; relations, and:</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">f.is_relation</span> <span class=\"pre\">and</span> <span class=\"pre\">f.related_model</span> <span class=\"pre\">is</span> <span class=\"pre\">None</span></code>, because the new\n<code class=\"docutils literal notranslate\"><span class=\"pre\">get_field()</span></code> API will find\n<a class=\"reference internal\" href=\"/id/2.0/ref/contrib/contenttypes/#django.contrib.contenttypes.fields.GenericForeignKey\" title=\"django.contrib.contenttypes.fields.GenericForeignKey\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">GenericForeignKey</span></code></a> relations.</p></li>\n</ul>\n</li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">MyModel._meta.get_field_by_name(name)</span></code> returns a tuple of these four\nvalues with the following replacements:</p>\n<ul>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">field</span></code> dapat ditemukan oleh <code class=\"docutils literal notranslate\"><span class=\"pre\">MyModel._meta.get_field(name)</span></code></p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">model</span></code> dapat ditemukan melalui atribut  <a class=\"reference internal\" href=\"/id/2.0/ref/models/fields/#django.db.models.Field.model\" title=\"django.db.models.Field.model\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">model</span></code></a> pada bidang.</p></li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">direct</span></code> dapat ditemukan oleh: <code class=\"docutils literal notranslate\"><span class=\"pre\">not</span> <span class=\"pre\">field.auto_created</span> <span class=\"pre\">or</span> <span class=\"pre\">field.concrete</span></code></p>\n<p>The <a class=\"reference internal\" href=\"/id/2.0/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\"><span class=\"pre\">auto_created</span></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\"><span class=\"pre\">AutoField</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">OneToOneField</span></code> on proxy models.\nWe avoid filtering out these attributes using the\n<a class=\"reference internal\" href=\"/id/2.0/ref/models/fields/#django.db.models.Field.concrete\" title=\"django.db.models.Field.concrete\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">concrete</span></code></a> attribute.</p>\n</li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">m2m</span></code> dapat ditemukan melalui atribut <a class=\"reference internal\" href=\"/id/2.0/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\"><span class=\"pre\">many_to_many</span></code></a> pada bidang.</p></li>\n</ul>\n</li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">MyModel._meta.get_fields_with_model()</span></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><span class=\"n\">f</span><span class=\"p\">,</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">model</span> <span class=\"k\">if</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">model</span> <span class=\"o\">!=</span> <span class=\"n\">MyModel</span> <span class=\"k\">else</span> <span class=\"kc\">None</span><span class=\"p\">)</span>\n    <span class=\"k\">for</span> <span class=\"n\">f</span> <span class=\"ow\">in</span> <span class=\"n\">MyModel</span><span class=\"o\">.</span><span class=\"n\">_meta</span><span class=\"o\">.</span><span class=\"n\">get_fields</span><span class=\"p\">()</span>\n    <span class=\"k\">if</span> <span class=\"ow\">not</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">is_relation</span>\n        <span class=\"ow\">or</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">one_to_one</span>\n        <span class=\"ow\">or</span> <span class=\"p\">(</span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">many_to_one</span> <span class=\"ow\">and</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">related_model</span><span class=\"p\">)</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">MyModel._meta.get_concrete_fields_with_model()</span></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><span class=\"n\">f</span><span class=\"p\">,</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">model</span> <span class=\"k\">if</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">model</span> <span class=\"o\">!=</span> <span class=\"n\">MyModel</span> <span class=\"k\">else</span> <span class=\"kc\">None</span><span class=\"p\">)</span>\n    <span class=\"k\">for</span> <span class=\"n\">f</span> <span class=\"ow\">in</span> <span class=\"n\">MyModel</span><span class=\"o\">.</span><span class=\"n\">_meta</span><span class=\"o\">.</span><span class=\"n\">get_fields</span><span class=\"p\">()</span>\n    <span class=\"k\">if</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">concrete</span> <span class=\"ow\">and</span> <span class=\"p\">(</span>\n        <span class=\"ow\">not</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">is_relation</span>\n        <span class=\"ow\">or</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">one_to_one</span>\n        <span class=\"ow\">or</span> <span class=\"p\">(</span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">many_to_one</span> <span class=\"ow\">and</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">related_model</span><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\"><span class=\"pre\">MyModel._meta.get_m2m_with_model()</span></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><span class=\"n\">f</span><span class=\"p\">,</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">model</span> <span class=\"k\">if</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">model</span> <span class=\"o\">!=</span> <span class=\"n\">MyModel</span> <span class=\"k\">else</span> <span class=\"kc\">None</span><span class=\"p\">)</span>\n    <span class=\"k\">for</span> <span class=\"n\">f</span> <span class=\"ow\">in</span> <span class=\"n\">MyModel</span><span class=\"o\">.</span><span class=\"n\">_meta</span><span class=\"o\">.</span><span class=\"n\">get_fields</span><span class=\"p\">()</span>\n    <span class=\"k\">if</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">many_to_many</span> <span class=\"ow\">and</span> <span class=\"ow\">not</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">auto_created</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">MyModel._meta.get_all_related_objects()</span></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=\"n\">f</span> <span class=\"k\">for</span> <span class=\"n\">f</span> <span class=\"ow\">in</span> <span class=\"n\">MyModel</span><span class=\"o\">.</span><span class=\"n\">_meta</span><span class=\"o\">.</span><span class=\"n\">get_fields</span><span class=\"p\">()</span>\n    <span class=\"k\">if</span> <span class=\"p\">(</span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">one_to_many</span> <span class=\"ow\">or</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">one_to_one</span><span class=\"p\">)</span>\n    <span class=\"ow\">and</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">auto_created</span> <span class=\"ow\">and</span> <span class=\"ow\">not</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">concrete</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">MyModel._meta.get_all_related_objects_with_model()</span></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><span class=\"n\">f</span><span class=\"p\">,</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">model</span> <span class=\"k\">if</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">model</span> <span class=\"o\">!=</span> <span class=\"n\">MyModel</span> <span class=\"k\">else</span> <span class=\"kc\">None</span><span class=\"p\">)</span>\n    <span class=\"k\">for</span> <span class=\"n\">f</span> <span class=\"ow\">in</span> <span class=\"n\">MyModel</span><span class=\"o\">.</span><span class=\"n\">_meta</span><span class=\"o\">.</span><span class=\"n\">get_fields</span><span class=\"p\">()</span>\n    <span class=\"k\">if</span> <span class=\"p\">(</span><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">one_to_many</span> <span class=\"ow\">or</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">one_to_one</span><span class=\"p\">)</span>\n    <span class=\"ow\">and</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">auto_created</span> <span class=\"ow\">and</span> <span class=\"ow\">not</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">concrete</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">MyModel._meta.get_all_related_many_to_many_objects()</span></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=\"n\">f</span> <span class=\"k\">for</span> <span class=\"n\">f</span> <span class=\"ow\">in</span> <span class=\"n\">MyModel</span><span class=\"o\">.</span><span class=\"n\">_meta</span><span class=\"o\">.</span><span class=\"n\">get_fields</span><span class=\"p\">(</span><span class=\"n\">include_hidden</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n    <span class=\"k\">if</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">many_to_many</span> <span class=\"ow\">and</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">auto_created</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">MyModel._meta.get_all_related_m2m_objects_with_model()</span></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><span class=\"n\">f</span><span class=\"p\">,</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">model</span> <span class=\"k\">if</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">model</span> <span class=\"o\">!=</span> <span class=\"n\">MyModel</span> <span class=\"k\">else</span> <span class=\"kc\">None</span><span class=\"p\">)</span>\n    <span class=\"k\">for</span> <span class=\"n\">f</span> <span class=\"ow\">in</span> <span class=\"n\">MyModel</span><span class=\"o\">.</span><span class=\"n\">_meta</span><span class=\"o\">.</span><span class=\"n\">get_fields</span><span class=\"p\">(</span><span class=\"n\">include_hidden</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n    <span class=\"k\">if</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">many_to_many</span> <span class=\"ow\">and</span> <span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">auto_created</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n</li>\n<li><p><code class=\"docutils literal notranslate\"><span class=\"pre\">MyModel._meta.get_all_field_names()</span></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=\"w\"> </span><span class=\"nn\">itertools</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">chain</span>\n<span class=\"nb\">list</span><span class=\"p\">(</span><span class=\"nb\">set</span><span class=\"p\">(</span><span class=\"n\">chain</span><span class=\"o\">.</span><span class=\"n\">from_iterable</span><span class=\"p\">(</span>\n    <span class=\"p\">(</span><span class=\"n\">field</span><span class=\"o\">.</span><span class=\"n\">name</span><span class=\"p\">,</span> <span class=\"n\">field</span><span class=\"o\">.</span><span class=\"n\">attname</span><span class=\"p\">)</span> <span class=\"k\">if</span> <span class=\"nb\">hasattr</span><span class=\"p\">(</span><span class=\"n\">field</span><span class=\"p\">,</span> <span class=\"s1\">&#39;attname&#39;</span><span class=\"p\">)</span> <span class=\"k\">else</span> <span class=\"p\">(</span><span class=\"n\">field</span><span class=\"o\">.</span><span class=\"n\">name</span><span class=\"p\">,)</span>\n    <span class=\"k\">for</span> <span class=\"n\">field</span> <span class=\"ow\">in</span> <span class=\"n\">MyModel</span><span class=\"o\">.</span><span class=\"n\">_meta</span><span class=\"o\">.</span><span class=\"n\">get_fields</span><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><span class=\"n\">field</span><span class=\"o\">.</span><span class=\"n\">many_to_one</span> <span class=\"ow\">and</span> <span class=\"n\">field</span><span class=\"o\">.</span><span class=\"n\">related_model</span> <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\"><span class=\"pre\">ForeignKey</span></code>s are included, but fields\nassociated with <code class=\"docutils literal notranslate\"><span class=\"pre\">GenericForeignKey</span></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><span class=\"n\">f</span><span class=\"o\">.</span><span class=\"n\">name</span> <span class=\"k\">for</span> <span class=\"n\">f</span> <span class=\"ow\">in</span> <span class=\"n\">MyModel</span><span class=\"o\">.</span><span class=\"n\">_meta</span><span class=\"o\">.</span><span class=\"n\">get_fields</span><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.0/ref/"},{"docname":"ref/models/index","title":"Model","url":"/id/2.0/ref/models/"}],"prev":{"docname":"ref/models/indexes","title":"Model index reference","url":"/id/2.0/ref/models/indexes/"},"next":{"docname":"ref/models/relations","title":"Related objects reference","url":"/id/2.0/ref/models/relations/"},"formats":{"html":"/id/2.0/ref/models/meta/","markdown":"/id/2.0/ref/models/meta.md","json":"/id/2.0/ref/models/meta.json"},"source":"https://github.com/django/django/blob/stable/2.0.x/docs/ref/models/meta.txt","official":"https://docs.djangoproject.com/id/2.0/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"]}