{"title":"Model Meta options","version":"6.0","locale":"el","docname":"ref/models/options","url":"/el/6.0/ref/models/options/","canonical":"https://djangodocs.dev/el/6.0/ref/models/options/","summary":"This document explains all the possible metadata options that you can give your model in its internal class Meta . Available Meta options Link to this heading #…","html":"<h1>Model <code class=\"docutils literal notranslate\"><span class=\"pre\">Meta</span></code> options<a class=\"heading-anchor\" href=\"#model-meta-options\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>This document explains all the possible <a class=\"reference internal\" href=\"/el/6.0/topics/db/models/#meta-options\"><span class=\"std std-ref\">metadata options</span></a> that you can give your model in its internal\n<code class=\"docutils literal notranslate\"><span class=\"pre\">class</span> <span class=\"pre\">Meta</span></code>.</p>\n<section id=\"available-meta-options\">\n<h2>Available <code class=\"docutils literal notranslate\"><span class=\"pre\">Meta</span></code> options<a class=\"heading-anchor\" href=\"#available-meta-options\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"abstract\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">abstract</span></code><a class=\"heading-anchor\" href=\"#abstract\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.abstract\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">abstract</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.abstract\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>If <code class=\"docutils literal notranslate\"><span class=\"pre\">abstract</span> <span class=\"pre\">=</span> <span class=\"pre\">True</span></code>, this model will be an\n<a class=\"reference internal\" href=\"/el/6.0/topics/db/models/#abstract-base-classes\"><span class=\"std std-ref\">abstract base class</span></a>.</p>\n</dd></dl>\n\n</section>\n<section id=\"app-label\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">app_label</span></code><a class=\"heading-anchor\" href=\"#app-label\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.app_label\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">app_label</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.app_label\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>If a model is defined outside of an application in\n<a class=\"reference internal\" href=\"/el/6.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a>, it must declare which app it belongs to:</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\">app_label</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;myapp&quot;</span>\n</code></pre></div>\n<p>If you want to represent a model with the format <code class=\"docutils literal notranslate\"><span class=\"pre\">app_label.object_name</span></code>\nor <code class=\"docutils literal notranslate\"><span class=\"pre\">app_label.model_name</span></code> you can use <code class=\"docutils literal notranslate\"><span class=\"pre\">model._meta.label</span></code>\nor <code class=\"docutils literal notranslate\"><span class=\"pre\">model._meta.label_lower</span></code> respectively.</p>\n</dd></dl>\n\n</section>\n<section id=\"base-manager-name\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">base_manager_name</span></code><a class=\"heading-anchor\" href=\"#base-manager-name\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.base_manager_name\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">base_manager_name</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.base_manager_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>The attribute name of the manager, for example, <code class=\"docutils literal notranslate\"><span class=\"pre\">'objects'</span></code>, to use for\nthe model’s <a class=\"reference internal\" href=\"/el/6.0/topics/db/managers/#django.db.models.Model._base_manager\" title=\"django.db.models.Model._base_manager\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">_base_manager</span></code></a>.</p>\n</dd></dl>\n\n</section>\n<section id=\"db-table\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">db_table</span></code><a class=\"heading-anchor\" href=\"#db-table\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.db_table\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">db_table</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.db_table\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>The name of the database table to use for the model:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"n\">db_table</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;music_album&quot;</span>\n</code></pre></div>\n</dd></dl>\n\n<section id=\"table-names\">\n<span id=\"id1\"></span><h4>Table names<a class=\"heading-anchor\" href=\"#table-names\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>To save you time, Django automatically derives the name of the database table\nfrom the name of your model class and the app that contains it. A model’s\ndatabase table name is constructed by joining the model’s «app label» – the\nname you used in <a class=\"reference internal\" href=\"/el/6.0/ref/django-admin/#django-admin-startapp\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">manage.py</span> <span class=\"pre\">startapp</span></code></a> – to the model’s\nclass name, with an underscore between them.</p>\n<p>For example, if you have an app <code class=\"docutils literal notranslate\"><span class=\"pre\">bookstore</span></code> (as created by\n<code class=\"docutils literal notranslate\"><span class=\"pre\">manage.py</span> <span class=\"pre\">startapp</span> <span class=\"pre\">bookstore</span></code>), a model defined as <code class=\"docutils literal notranslate\"><span class=\"pre\">class</span> <span class=\"pre\">Book</span></code> will have\na database table named <code class=\"docutils literal notranslate\"><span class=\"pre\">bookstore_book</span></code>.</p>\n<p>To override the database table name, use the <code class=\"docutils literal notranslate\"><span class=\"pre\">db_table</span></code> parameter in\n<code class=\"docutils literal notranslate\"><span class=\"pre\">class</span> <span class=\"pre\">Meta</span></code>.</p>\n<p>If your database table name is an SQL reserved word, or contains characters\nthat aren’t allowed in Python variable names – notably, the hyphen – that’s\nOK. Django quotes column and table names behind the scenes.</p>\n<aside class=\"admonition-use-lowercase-table-names-for-mariadb-and-mysql admonition\">\n<p class=\"admonition-title\">Use lowercase table names for MariaDB and MySQL</p>\n<p>It is strongly advised that you use lowercase table names when you override\nthe table name via <code class=\"docutils literal notranslate\"><span class=\"pre\">db_table</span></code>, particularly if you are using the MySQL\nbackend. See the <a class=\"reference internal\" href=\"/el/6.0/ref/databases/#mysql-notes\"><span class=\"std std-ref\">MySQL notes</span></a> for more details.</p>\n</aside>\n<aside class=\"admonition-table-name-quoting-for-oracle admonition\">\n<p class=\"admonition-title\">Table name quoting for Oracle</p>\n<p>In order to meet the 30-char limitation Oracle has on table names,\nand match the usual conventions for Oracle databases, Django may shorten\ntable names and turn them all-uppercase. To prevent such transformations,\nuse a quoted name as the value for <code class=\"docutils literal notranslate\"><span class=\"pre\">db_table</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=\"n\">db_table</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;&quot;name_left_in_lowercase&quot;&#39;</span>\n</code></pre></div>\n<p>Such quoted names can also be used with Django’s other supported database\nbackends; except for Oracle, however, the quotes have no effect. See the\n<a class=\"reference internal\" href=\"/el/6.0/ref/databases/#oracle-notes\"><span class=\"std std-ref\">Oracle notes</span></a> for more details.</p>\n</aside>\n</section>\n</section>\n<section id=\"db-table-comment\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">db_table_comment</span></code><a class=\"heading-anchor\" href=\"#db-table-comment\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.db_table_comment\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">db_table_comment</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.db_table_comment\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>The comment on the database table to use for this model. It is useful for\ndocumenting database tables for individuals with direct database access who may\nnot be looking at your Django code. For example:</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\">Answer</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\">question</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\">Question</span><span class=\"p\">,</span> <span class=\"n\">on_delete</span><span class=\"o\">=</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CASCADE</span><span class=\"p\">)</span>\n    <span class=\"n\">answer</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">TextField</span><span class=\"p\">()</span>\n\n    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Meta</span><span class=\"p\">:</span>\n        <span class=\"n\">db_table_comment</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;Question answers&quot;</span>\n</code></pre></div>\n</section>\n<section id=\"db-tablespace\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">db_tablespace</span></code><a class=\"heading-anchor\" href=\"#db-tablespace\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.db_tablespace\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">db_tablespace</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.db_tablespace\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>The name of the <a class=\"reference internal\" href=\"/el/6.0/topics/db/tablespaces/\"><span class=\"doc\">database tablespace</span></a> to use\nfor this model. The default is the project’s <a class=\"reference internal\" href=\"/el/6.0/ref/settings/#std-setting-DEFAULT_TABLESPACE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEFAULT_TABLESPACE</span></code></a>\nsetting, if set. If the backend doesn’t support tablespaces, this option is\nignored.</p>\n</dd></dl>\n\n</section>\n<section id=\"default-manager-name\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">default_manager_name</span></code><a class=\"heading-anchor\" href=\"#default-manager-name\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.default_manager_name\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">default_manager_name</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.default_manager_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>The name of the manager to use for the model’s\n<a class=\"reference internal\" href=\"/el/6.0/topics/db/managers/#django.db.models.Model._default_manager\" title=\"django.db.models.Model._default_manager\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">_default_manager</span></code></a>.</p>\n</dd></dl>\n\n</section>\n<section id=\"default-related-name\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">default_related_name</span></code><a class=\"heading-anchor\" href=\"#default-related-name\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.default_related_name\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">default_related_name</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.default_related_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>The name that will be used by default for the relation from a related\nobject back to this one. The default is <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;model_name&gt;_set</span></code>.</p>\n<p>This option also sets <a class=\"reference internal\" href=\"/el/6.0/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\"><span class=\"pre\">related_query_name</span></code></a>.</p>\n<p>As the reverse name for a field should be unique, be careful if you intend\nto subclass your model. To work around name collisions, part of the name\nshould contain <code class=\"docutils literal notranslate\"><span class=\"pre\">'%(app_label)s'</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">'%(model_name)s'</span></code>, which are\nreplaced respectively by the name of the application the model is in,\nand the name of the model, both lowercased. See the paragraph on\n<a class=\"reference internal\" href=\"/el/6.0/topics/db/models/#abstract-related-name\"><span class=\"std std-ref\">related names for abstract models</span></a>.</p>\n</dd></dl>\n\n</section>\n<section id=\"get-latest-by\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">get_latest_by</span></code><a class=\"heading-anchor\" href=\"#get-latest-by\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.get_latest_by\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">get_latest_by</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.get_latest_by\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>The name of a field or a list of field names in the model, typically\n<a class=\"reference internal\" href=\"/el/6.0/ref/models/fields/#django.db.models.DateField\" title=\"django.db.models.DateField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DateField</span></code></a>, <a class=\"reference internal\" href=\"/el/6.0/ref/models/fields/#django.db.models.DateTimeField\" title=\"django.db.models.DateTimeField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">DateTimeField</span></code></a>, or <a class=\"reference internal\" href=\"/el/6.0/ref/models/fields/#django.db.models.IntegerField\" title=\"django.db.models.IntegerField\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">IntegerField</span></code></a>. This\nspecifies the default field(s) to use in your model <a class=\"reference internal\" href=\"/el/6.0/topics/db/managers/#django.db.models.Manager\" title=\"django.db.models.Manager\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">Manager</span></code></a>’s\n<a class=\"reference internal\" href=\"/el/6.0/ref/models/querysets/#django.db.models.query.QuerySet.latest\" title=\"django.db.models.query.QuerySet.latest\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">latest()</span></code></a> and\n<a class=\"reference internal\" href=\"/el/6.0/ref/models/querysets/#django.db.models.query.QuerySet.earliest\" title=\"django.db.models.query.QuerySet.earliest\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">earliest()</span></code></a> methods.</p>\n<p>Example:</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\"># Latest by ascending order_date.</span>\n<span class=\"n\">get_latest_by</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;order_date&quot;</span>\n\n<span class=\"c1\"># Latest by priority descending, order_date ascending.</span>\n<span class=\"n\">get_latest_by</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;-priority&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;order_date&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>See the <a class=\"reference internal\" href=\"/el/6.0/ref/models/querysets/#django.db.models.query.QuerySet.latest\" title=\"django.db.models.query.QuerySet.latest\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">latest()</span></code></a> docs for more.</p>\n</dd></dl>\n\n</section>\n<section id=\"managed\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">managed</span></code><a class=\"heading-anchor\" href=\"#managed\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.managed\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">managed</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.managed\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Defaults to <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>, meaning Django will create the appropriate database\ntables in <a class=\"reference internal\" href=\"/el/6.0/ref/django-admin/#django-admin-migrate\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">migrate</span></code></a> or as part of migrations and remove them as\npart of a <a class=\"reference internal\" href=\"/el/6.0/ref/django-admin/#django-admin-flush\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">flush</span></code></a> management command. That is, Django\n<em>manages</em> the database tables” lifecycles.</p>\n<p>If <code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>, no database table creation, modification, or deletion\noperations will be performed for this model. This is useful if the model\nrepresents an existing table or a database view that has been created by\nsome other means. This is the <em>only</em> difference when <code class=\"docutils literal notranslate\"><span class=\"pre\">managed=False</span></code>. All\nother aspects of model handling are exactly the same as normal. This\nincludes</p>\n<ol class=\"arabic\">\n<li><p>Adding an automatic primary key field to the model if you don’t\ndeclare it. To avoid confusion for later code readers, it’s\nrecommended to specify all the columns from the database table you\nare modeling when using unmanaged models.</p></li>\n<li><p>If a model with <code class=\"docutils literal notranslate\"><span class=\"pre\">managed=False</span></code> contains a\n<a class=\"reference internal\" href=\"/el/6.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> that points to another\nunmanaged model, then the intermediate table for the many-to-many\njoin will also not be created. However, the intermediary table\nbetween one managed and one unmanaged model <em>will</em> be created.</p>\n<p>If you need to change this default behavior, create the intermediary\ntable as an explicit model (with <code class=\"docutils literal notranslate\"><span class=\"pre\">managed</span></code> set as needed) and use\nthe <a class=\"reference internal\" href=\"/el/6.0/ref/models/fields/#django.db.models.ManyToManyField.through\" title=\"django.db.models.ManyToManyField.through\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ManyToManyField.through</span></code></a> attribute to make the relation\nuse your custom model.</p>\n</li>\n</ol>\n<p>For tests involving models with <code class=\"docutils literal notranslate\"><span class=\"pre\">managed=False</span></code>, it’s up to you to ensure\nthe correct tables are created as part of the test setup.</p>\n<p>If you’re interested in changing the Python-level behavior of a model\nclass, you <em>could</em> use <code class=\"docutils literal notranslate\"><span class=\"pre\">managed=False</span></code> and create a copy of an existing\nmodel. However, there’s a better approach for that situation:\n<a class=\"reference internal\" href=\"/el/6.0/topics/db/models/#proxy-models\"><span class=\"std std-ref\">Proxy models</span></a>.</p>\n</dd></dl>\n\n</section>\n<section id=\"order-with-respect-to\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">order_with_respect_to</span></code><a class=\"heading-anchor\" href=\"#order-with-respect-to\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.order_with_respect_to\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">order_with_respect_to</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.order_with_respect_to\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Makes this object orderable with respect to the given field, usually a\n<code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code>. This can be used to make related objects orderable with\nrespect to a parent object. For example, if an <code class=\"docutils literal notranslate\"><span class=\"pre\">Answer</span></code> relates to a\n<code class=\"docutils literal notranslate\"><span class=\"pre\">Question</span></code> object, and a question has more than one answer, and the order\nof answers matters, you’d do this:</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.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Question</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\">text</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">TextField</span><span class=\"p\">()</span>\n    <span class=\"c1\"># ...</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Answer</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\">question</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\">Question</span><span class=\"p\">,</span> <span class=\"n\">on_delete</span><span class=\"o\">=</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CASCADE</span><span class=\"p\">)</span>\n    <span class=\"c1\"># ...</span>\n\n    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Meta</span><span class=\"p\">:</span>\n        <span class=\"n\">order_with_respect_to</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;question&quot;</span>\n</code></pre></div>\n<p>When <code class=\"docutils literal notranslate\"><span class=\"pre\">order_with_respect_to</span></code> is set, two additional methods are provided\nto retrieve and to set the order of the related objects:\n<code class=\"docutils literal notranslate\"><span class=\"pre\">get_RELATED_order()</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">set_RELATED_order()</span></code>, where <code class=\"docutils literal notranslate\"><span class=\"pre\">RELATED</span></code> is\nthe lowercased model name. For example, assuming that a <code class=\"docutils literal notranslate\"><span class=\"pre\">Question</span></code> object\nhas multiple related <code class=\"docutils literal notranslate\"><span class=\"pre\">Answer</span></code> objects, the list returned contains the\nprimary keys of the related <code class=\"docutils literal notranslate\"><span class=\"pre\">Answer</span></code> objects:</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=\"n\">question</span> <span class=\"o\">=</span> <span class=\"n\">Question</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=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">question</span><span class=\"o\">.</span><span class=\"n\">get_answer_order</span><span class=\"p\">()</span>\n<span class=\"go\">[1, 2, 3]</span>\n</code></pre></div>\n<p>The order of a <code class=\"docutils literal notranslate\"><span class=\"pre\">Question</span></code> object’s related <code class=\"docutils literal notranslate\"><span class=\"pre\">Answer</span></code> objects can be set\nby passing in a list of <code class=\"docutils literal notranslate\"><span class=\"pre\">Answer</span></code> primary keys:</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=\"n\">question</span><span class=\"o\">.</span><span class=\"n\">set_answer_order</span><span class=\"p\">([</span><span class=\"mi\">3</span><span class=\"p\">,</span> <span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">])</span>\n</code></pre></div>\n<p>The related objects also get two methods, <code class=\"docutils literal notranslate\"><span class=\"pre\">get_next_in_order()</span></code> and\n<code class=\"docutils literal notranslate\"><span class=\"pre\">get_previous_in_order()</span></code>, which can be used to access those objects in\ntheir proper order. Assuming the <code class=\"docutils literal notranslate\"><span class=\"pre\">Answer</span></code> objects are ordered by <code class=\"docutils literal notranslate\"><span class=\"pre\">id</span></code>:</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=\"n\">answer</span> <span class=\"o\">=</span> <span class=\"n\">Answer</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=\"nb\">id</span><span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">answer</span><span class=\"o\">.</span><span class=\"n\">get_next_in_order</span><span class=\"p\">()</span>\n<span class=\"go\">&lt;Answer: 3&gt;</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">answer</span><span class=\"o\">.</span><span class=\"n\">get_previous_in_order</span><span class=\"p\">()</span>\n<span class=\"go\">&lt;Answer: 1&gt;</span>\n</code></pre></div>\n</dd></dl>\n\n<aside class=\"admonition-order-with-respect-to-implicitly-sets-the-ordering-option admonition\">\n<p class=\"admonition-title\"><code class=\"docutils literal notranslate\"><span class=\"pre\">order_with_respect_to</span></code> implicitly sets the <code class=\"docutils literal notranslate\"><span class=\"pre\">ordering</span></code> option</p>\n<p>Internally, <code class=\"docutils literal notranslate\"><span class=\"pre\">order_with_respect_to</span></code> adds an additional field/database\ncolumn named <code class=\"docutils literal notranslate\"><span class=\"pre\">_order</span></code> and sets the model’s <a class=\"reference internal\" href=\"#django.db.models.Options.ordering\" title=\"django.db.models.Options.ordering\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">ordering</span></code></a>\noption to this field. Consequently, <code class=\"docutils literal notranslate\"><span class=\"pre\">order_with_respect_to</span></code> and\n<code class=\"docutils literal notranslate\"><span class=\"pre\">ordering</span></code> cannot be used together, and the ordering added by\n<code class=\"docutils literal notranslate\"><span class=\"pre\">order_with_respect_to</span></code> will apply whenever you obtain a list of objects\nof this model.</p>\n</aside>\n<aside class=\"admonition-changing-order-with-respect-to admonition\">\n<p class=\"admonition-title\">Changing <code class=\"docutils literal notranslate\"><span class=\"pre\">order_with_respect_to</span></code></p>\n<p>Because <code class=\"docutils literal notranslate\"><span class=\"pre\">order_with_respect_to</span></code> adds a new database column, be sure to\nmake and apply the appropriate migrations if you add or change\n<code class=\"docutils literal notranslate\"><span class=\"pre\">order_with_respect_to</span></code> after your initial <a class=\"reference internal\" href=\"/el/6.0/ref/django-admin/#django-admin-migrate\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">migrate</span></code></a>.</p>\n</aside>\n</section>\n<section id=\"ordering\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">ordering</span></code><a class=\"heading-anchor\" href=\"#ordering\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.ordering\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">ordering</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.ordering\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>The default ordering for the object, for use when obtaining lists of\nobjects:</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\">ordering</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;-order_date&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>This is a tuple or list of strings and/or query expressions. Each string is\na field name with an optional «-» prefix, which indicates descending order.\nFields without a leading «-» will be ordered ascending. Use the string «?»\nto order randomly.</p>\n<p>For example, to order by a <code class=\"docutils literal notranslate\"><span class=\"pre\">pub_date</span></code> field ascending, use this:</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\">ordering</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;pub_date&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>To order by <code class=\"docutils literal notranslate\"><span class=\"pre\">pub_date</span></code> descending, use this:</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\">ordering</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;-pub_date&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>To order by <code class=\"docutils literal notranslate\"><span class=\"pre\">pub_date</span></code> descending, then by <code class=\"docutils literal notranslate\"><span class=\"pre\">author</span></code> ascending, use\nthis:</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\">ordering</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;-pub_date&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;author&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>You can also use <a class=\"reference internal\" href=\"/el/6.0/ref/models/expressions/\"><span class=\"doc\">query expressions</span></a>. To\norder by <code class=\"docutils literal notranslate\"><span class=\"pre\">author</span></code> ascending and make null values sort last, use this:</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.db.models</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">F</span>\n\n<span class=\"n\">ordering</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"n\">F</span><span class=\"p\">(</span><span class=\"s2\">&quot;author&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">asc</span><span class=\"p\">(</span><span class=\"n\">nulls_last</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)]</span>\n</code></pre></div>\n</dd></dl>\n\n<aside class=\"admonition-default-ordering-and-group-by admonition\">\n<p class=\"admonition-title\">Default ordering and GROUP BY</p>\n<p>In <a class=\"reference internal\" href=\"/el/6.0/topics/db/aggregation/#aggregation-ordering-interaction\"><span class=\"std std-ref\">GROUP BY queries</span></a> (for example,\nthose using <a class=\"reference internal\" href=\"/el/6.0/ref/models/querysets/#django.db.models.query.QuerySet.values\" title=\"django.db.models.query.QuerySet.values\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">values()</span></code></a> and <a class=\"reference internal\" href=\"/el/6.0/ref/models/querysets/#django.db.models.query.QuerySet.annotate\" title=\"django.db.models.query.QuerySet.annotate\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">annotate()</span></code></a>), the\ndefault ordering is not applied.</p>\n</aside>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Προειδοποίηση</p>\n<p>Ordering is not a free operation. Each field you add to the ordering\nincurs a cost to your database. Each foreign key you add will\nimplicitly include all of its default orderings as well.</p>\n<p>If a query doesn’t have an ordering specified, results are returned from\nthe database in an unspecified order. A particular ordering is guaranteed\nonly when ordering by a set of fields that uniquely identify each object in\nthe results. For example, if a <code class=\"docutils literal notranslate\"><span class=\"pre\">name</span></code> field isn’t unique, ordering by it\nwon’t guarantee objects with the same name always appear in the same order.</p>\n</aside>\n</section>\n<section id=\"permissions\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">permissions</span></code><a class=\"heading-anchor\" href=\"#permissions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.permissions\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">permissions</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Extra permissions to enter into the permissions table when creating this\nobject. Add, change, delete, and view permissions are automatically created\nfor each model. This example specifies an extra permission,\n<code class=\"docutils literal notranslate\"><span class=\"pre\">can_deliver_pizzas</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=\"n\">permissions</span> <span class=\"o\">=</span> <span class=\"p\">[(</span><span class=\"s2\">&quot;can_deliver_pizzas&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Can deliver pizzas&quot;</span><span class=\"p\">)]</span>\n</code></pre></div>\n<p>This is a list or tuple of 2-tuples in the format <code class=\"docutils literal notranslate\"><span class=\"pre\">(permission_code,</span>\n<span class=\"pre\">human_readable_permission_name)</span></code>.</p>\n</dd></dl>\n\n</section>\n<section id=\"default-permissions\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">default_permissions</span></code><a class=\"heading-anchor\" href=\"#default-permissions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.default_permissions\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">default_permissions</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.default_permissions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Defaults to <code class=\"docutils literal notranslate\"><span class=\"pre\">('add',</span> <span class=\"pre\">'change',</span> <span class=\"pre\">'delete',</span> <span class=\"pre\">'view')</span></code>. You may customize this\nlist, for example, by setting this to an empty list if your app doesn’t\nrequire any of the default permissions. It must be specified on the model\nbefore the model is created by <a class=\"reference internal\" href=\"/el/6.0/ref/django-admin/#django-admin-migrate\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">migrate</span></code></a> in order to prevent any\nomitted permissions from being created.</p>\n</dd></dl>\n\n</section>\n<section id=\"proxy\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">proxy</span></code><a class=\"heading-anchor\" href=\"#proxy\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.proxy\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">proxy</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.proxy\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>If <code class=\"docutils literal notranslate\"><span class=\"pre\">proxy</span> <span class=\"pre\">=</span> <span class=\"pre\">True</span></code>, a model which subclasses another model will be treated\nas a <a class=\"reference internal\" href=\"/el/6.0/topics/db/models/#proxy-models\"><span class=\"std std-ref\">proxy model</span></a>.</p>\n</dd></dl>\n\n</section>\n<section id=\"required-db-features\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">required_db_features</span></code><a class=\"heading-anchor\" href=\"#required-db-features\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.required_db_features\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">required_db_features</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.required_db_features\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>List of database features that the current connection should have so that\nthe model is considered during the migration phase. For example, if you set\nthis list to <code class=\"docutils literal notranslate\"><span class=\"pre\">['gis_enabled']</span></code>, the model will only be synchronized on\nGIS-enabled databases. It’s also useful to skip some models when testing\nwith several database backends. Avoid relations between models that may or\nmay not be created as the ORM doesn’t handle this.</p>\n</dd></dl>\n\n</section>\n<section id=\"required-db-vendor\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">required_db_vendor</span></code><a class=\"heading-anchor\" href=\"#required-db-vendor\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.required_db_vendor\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">required_db_vendor</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.required_db_vendor\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Name of a supported database vendor that this model is specific to. Current\nbuilt-in vendor names are: <code class=\"docutils literal notranslate\"><span class=\"pre\">sqlite</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">postgresql</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">mysql</span></code>,\n<code class=\"docutils literal notranslate\"><span class=\"pre\">oracle</span></code>. If this attribute is not empty and the current connection\nvendor doesn’t match it, the model will not be synchronized.</p>\n</dd></dl>\n\n</section>\n<section id=\"select-on-save\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">select_on_save</span></code><a class=\"heading-anchor\" href=\"#select-on-save\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.select_on_save\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">select_on_save</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.select_on_save\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Determines if Django will use the pre-1.6\n<a class=\"reference internal\" href=\"/el/6.0/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">django.db.models.Model.save()</span></code></a> algorithm. The old algorithm\nuses <code class=\"docutils literal notranslate\"><span class=\"pre\">SELECT</span></code> to determine if there is an existing row to be updated.\nThe new algorithm tries an <code class=\"docutils literal notranslate\"><span class=\"pre\">UPDATE</span></code> directly. In some rare cases the\n<code class=\"docutils literal notranslate\"><span class=\"pre\">UPDATE</span></code> of an existing row isn’t visible to Django. An example is the\nPostgreSQL <code class=\"docutils literal notranslate\"><span class=\"pre\">ON</span> <span class=\"pre\">UPDATE</span></code> trigger which returns <code class=\"docutils literal notranslate\"><span class=\"pre\">NULL</span></code>. In such cases the\nnew algorithm will end up doing an <code class=\"docutils literal notranslate\"><span class=\"pre\">INSERT</span></code> even when a row exists in\nthe database.</p>\n<p>Usually there is no need to set this attribute. The default is\n<code class=\"docutils literal notranslate\"><span class=\"pre\">False</span></code>.</p>\n<p>See <a class=\"reference internal\" href=\"/el/6.0/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">django.db.models.Model.save()</span></code></a> for more about the old and\nnew saving algorithm.</p>\n</dd></dl>\n\n</section>\n<section id=\"indexes\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">indexes</span></code><a class=\"heading-anchor\" href=\"#indexes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.indexes\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">indexes</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.indexes\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A list of <a class=\"reference internal\" href=\"/el/6.0/ref/models/indexes/\"><span class=\"doc\">indexes</span></a> that you want to define on\nthe model:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Customer</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\">100</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\">100</span><span class=\"p\">)</span>\n\n    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Meta</span><span class=\"p\">:</span>\n        <span class=\"n\">indexes</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n            <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Index</span><span class=\"p\">(</span><span class=\"n\">fields</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;last_name&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">]),</span>\n            <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Index</span><span class=\"p\">(</span><span class=\"n\">fields</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"p\">],</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;first_name_idx&quot;</span><span class=\"p\">),</span>\n        <span class=\"p\">]</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n<section id=\"unique-together\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">unique_together</span></code><a class=\"heading-anchor\" href=\"#unique-together\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.unique_together\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">unique_together</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.unique_together\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><aside class=\"admonition-use-class-uniqueconstraint-with-the-attr-options-constraints-option-instead admonition\">\n<p class=\"admonition-title\">Use <a class=\"reference internal\" href=\"/el/6.0/ref/models/constraints/#django.db.models.UniqueConstraint\" title=\"django.db.models.UniqueConstraint\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">UniqueConstraint</span></code></a> with the <a class=\"reference internal\" href=\"#django.db.models.Options.constraints\" title=\"django.db.models.Options.constraints\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">constraints</span></code></a> option instead.</p>\n<p><a class=\"reference internal\" href=\"/el/6.0/ref/models/constraints/#django.db.models.UniqueConstraint\" title=\"django.db.models.UniqueConstraint\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">UniqueConstraint</span></code></a> provides more functionality than\n<code class=\"docutils literal notranslate\"><span class=\"pre\">unique_together</span></code>. <code class=\"docutils literal notranslate\"><span class=\"pre\">unique_together</span></code> may be deprecated in the\nfuture.</p>\n</aside>\n<p>Sets of field names that, taken together, must be unique:</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\">unique_together</span> <span class=\"o\">=</span> <span class=\"p\">[[</span><span class=\"s2\">&quot;driver&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;restaurant&quot;</span><span class=\"p\">]]</span>\n</code></pre></div>\n<p>This is a list of lists that must be unique when considered together.\nIt’s used in the Django admin and is enforced at the database level (i.e.,\nthe appropriate <code class=\"docutils literal notranslate\"><span class=\"pre\">UNIQUE</span></code> statements are included in the <code class=\"docutils literal notranslate\"><span class=\"pre\">CREATE</span> <span class=\"pre\">TABLE</span></code>\nstatement).</p>\n<p>For convenience, <code class=\"docutils literal notranslate\"><span class=\"pre\">unique_together</span></code> can be a single list when dealing with\na single set of fields:</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\">unique_together</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"s2\">&quot;driver&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;restaurant&quot;</span><span class=\"p\">]</span>\n</code></pre></div>\n<p>A <a class=\"reference internal\" href=\"/el/6.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> cannot be included in\n<code class=\"docutils literal notranslate\"><span class=\"pre\">unique_together</span></code>. (It’s not clear what that would even mean!) If you\nneed to validate uniqueness related to a\n<a class=\"reference internal\" href=\"/el/6.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>, try using a signal or\nan explicit <a class=\"reference internal\" href=\"/el/6.0/ref/models/fields/#django.db.models.ManyToManyField.through\" title=\"django.db.models.ManyToManyField.through\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">through</span></code></a> model.</p>\n<p>The <code class=\"docutils literal notranslate\"><span class=\"pre\">ValidationError</span></code> raised during model validation when the constraint\nis violated has the <code class=\"docutils literal notranslate\"><span class=\"pre\">unique_together</span></code> error code.</p>\n</dd></dl>\n\n</section>\n<section id=\"constraints\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">constraints</span></code><a class=\"heading-anchor\" href=\"#constraints\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.constraints\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">constraints</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.constraints\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A list of <a class=\"reference internal\" href=\"/el/6.0/ref/models/constraints/\"><span class=\"doc\">constraints</span></a> that you want to\ndefine on the model:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.db</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">models</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Customer</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\">age</span> <span class=\"o\">=</span> <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">IntegerField</span><span class=\"p\">()</span>\n\n    <span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Meta</span><span class=\"p\">:</span>\n        <span class=\"n\">constraints</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n            <span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">CheckConstraint</span><span class=\"p\">(</span><span class=\"n\">condition</span><span class=\"o\">=</span><span class=\"n\">models</span><span class=\"o\">.</span><span class=\"n\">Q</span><span class=\"p\">(</span><span class=\"n\">age__gte</span><span class=\"o\">=</span><span class=\"mi\">18</span><span class=\"p\">),</span> <span class=\"n\">name</span><span class=\"o\">=</span><span class=\"s2\">&quot;age_gte_18&quot;</span><span class=\"p\">),</span>\n        <span class=\"p\">]</span>\n</code></pre></div>\n</dd></dl>\n\n</section>\n<section id=\"verbose-name\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">verbose_name</span></code><a class=\"heading-anchor\" href=\"#verbose-name\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.verbose_name\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">verbose_name</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.verbose_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A human-readable name for the object, singular:</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\">verbose_name</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;pizza&quot;</span>\n</code></pre></div>\n<p>If this isn’t given, Django will use a munged version of the class name:\n<code class=\"docutils literal notranslate\"><span class=\"pre\">CamelCase</span></code> becomes <code class=\"docutils literal notranslate\"><span class=\"pre\">camel</span> <span class=\"pre\">case</span></code>.</p>\n</dd></dl>\n\n</section>\n<section id=\"verbose-name-plural\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">verbose_name_plural</span></code><a class=\"heading-anchor\" href=\"#verbose-name-plural\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.verbose_name_plural\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">verbose_name_plural</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.verbose_name_plural\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>The plural name for the object:</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\">verbose_name_plural</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;stories&quot;</span>\n</code></pre></div>\n<p>If this isn’t given, Django will use <a class=\"reference internal\" href=\"#django.db.models.Options.verbose_name\" title=\"django.db.models.Options.verbose_name\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">verbose_name</span></code></a> +\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&quot;s&quot;</span></code>.</p>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"read-only-meta-attributes\">\n<h2>Read-only <code class=\"docutils literal notranslate\"><span class=\"pre\">Meta</span></code> attributes<a class=\"heading-anchor\" href=\"#read-only-meta-attributes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"label\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">label</span></code><a class=\"heading-anchor\" href=\"#label\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.label\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">label</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.label\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Representation of the object, returns <code class=\"docutils literal notranslate\"><span class=\"pre\">app_label.object_name</span></code>, e.g.\n<code class=\"docutils literal notranslate\"><span class=\"pre\">'polls.Question'</span></code>.</p>\n</dd></dl>\n\n</section>\n<section id=\"label-lower\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">label_lower</span></code><a class=\"heading-anchor\" href=\"#label-lower\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Options.label_lower\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">Options.</span></span><span class=\"sig-name descname\"><span class=\"pre\">label_lower</span></span><a class=\"heading-anchor\" href=\"#django.db.models.Options.label_lower\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Representation of the model, returns <code class=\"docutils literal notranslate\"><span class=\"pre\">app_label.model_name</span></code>, e.g.\n<code class=\"docutils literal notranslate\"><span class=\"pre\">'polls.question'</span></code>.</p>\n</dd></dl>\n\n</section>\n</section>","rootId":"model-meta-options","toc":[{"title":"Available Meta options","anchor":"available-meta-options","children":[{"title":"abstract","anchor":"abstract","children":[]},{"title":"app_label","anchor":"app-label","children":[]},{"title":"base_manager_name","anchor":"base-manager-name","children":[]},{"title":"db_table","anchor":"db-table","children":[{"title":"Table names","anchor":"table-names","children":[]}]},{"title":"db_table_comment","anchor":"db-table-comment","children":[]},{"title":"db_tablespace","anchor":"db-tablespace","children":[]},{"title":"default_manager_name","anchor":"default-manager-name","children":[]},{"title":"default_related_name","anchor":"default-related-name","children":[]},{"title":"get_latest_by","anchor":"get-latest-by","children":[]},{"title":"managed","anchor":"managed","children":[]},{"title":"order_with_respect_to","anchor":"order-with-respect-to","children":[]},{"title":"ordering","anchor":"ordering","children":[]},{"title":"permissions","anchor":"permissions","children":[]},{"title":"default_permissions","anchor":"default-permissions","children":[]},{"title":"proxy","anchor":"proxy","children":[]},{"title":"required_db_features","anchor":"required-db-features","children":[]},{"title":"required_db_vendor","anchor":"required-db-vendor","children":[]},{"title":"select_on_save","anchor":"select-on-save","children":[]},{"title":"indexes","anchor":"indexes","children":[]},{"title":"unique_together","anchor":"unique-together","children":[]},{"title":"constraints","anchor":"constraints","children":[]},{"title":"verbose_name","anchor":"verbose-name","children":[]},{"title":"verbose_name_plural","anchor":"verbose-name-plural","children":[]}]},{"title":"Read-only Meta attributes","anchor":"read-only-meta-attributes","children":[{"title":"label","anchor":"label","children":[]},{"title":"label_lower","anchor":"label-lower","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"API Reference","url":"/el/6.0/ref/"},{"docname":"ref/models/index","title":"Models","url":"/el/6.0/ref/models/"}],"prev":{"docname":"ref/models/class","title":"Model class reference","url":"/el/6.0/ref/models/class/"},"next":{"docname":"ref/models/instances","title":"Model instance reference","url":"/el/6.0/ref/models/instances/"},"formats":{"html":"/el/6.0/ref/models/options/","markdown":"/el/6.0/ref/models/options.md","json":"/el/6.0/ref/models/options.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/ref/models/options.txt","official":"https://docs.djangoproject.com/el/6.0/ref/models/options/","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","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}