{"title":"Model _meta API","version":"4.1","locale":"el","docname":"ref/models/meta","url":"/el/4.1/ref/models/meta/","canonical":"https://djangodocs.dev/el/4.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>Model <code class=\"docutils literal notranslate\">_meta</code> API<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>Methods that it provides can be used to:</p>\n<ul class=\"simple\">\n<li><p>Retrieve all field instances of a model</p></li>\n<li><p>Retrieve a single field instance of a model by name</p></li>\n</ul>\n<section id=\"field-access-api\">\n<span id=\"model-meta-field-api\"></span><h2>Field access API<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=\"/el/4.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=\"/el/4.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=\"/el/4.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> cannot be retrieved\nby name.</p>\n<p>If a field with the given name is not found a\n<a class=\"reference internal\" href=\"/el/4.1/ref/exceptions/#django.core.exceptions.FieldDoesNotExist\" title=\"django.core.exceptions.FieldDoesNotExist\"><code class=\"xref py py-class docutils literal notranslate\">FieldDoesNotExist</code></a> exception will be\nraised.</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.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>Retrieving all field instances of a 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=\"/el/4.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=\"/el/4.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 «+».</p>\n</dd>\n</dl>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">django.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>","rootId":"module-django.db.models.options","toc":[{"title":"Field access API","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":"Retrieving all field instances of a model","anchor":"retrieving-all-field-instances-of-a-model","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"API Reference","url":"/el/4.1/ref/"},{"docname":"ref/models/index","title":"Models","url":"/el/4.1/ref/models/"}],"prev":{"docname":"ref/models/constraints","title":"Constraints reference","url":"/el/4.1/ref/models/constraints/"},"next":{"docname":"ref/models/relations","title":"Related objects reference","url":"/el/4.1/ref/models/relations/"},"formats":{"html":"/el/4.1/ref/models/meta/","markdown":"/el/4.1/ref/models/meta.md","json":"/el/4.1/ref/models/meta.json"},"source":"https://github.com/django/django/blob/stable/4.1.x/docs/ref/models/meta.txt","official":"https://docs.djangoproject.com/el/4.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"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}