{"title":"Referens för begränsningar","version":"6.0","locale":"sv","docname":"ref/models/constraints","url":"/sv/6.0/ref/models/constraints/","canonical":"https://djangodocs.dev/sv/6.0/ref/models/constraints/","summary":"Klasserna som definieras i den här modulen skapar databasbegränsningar. De läggs till i modellens Meta.constraints alternativ.","html":"<span id=\"constraints-reference\"></span><h1>Referens för begränsningar<a class=\"heading-anchor\" href=\"#module-django.db.models.constraints\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Klasserna som definieras i den här modulen skapar databasbegränsningar. De läggs till i modellens <a class=\"reference internal\" href=\"/sv/6.0/ref/models/options/#django.db.models.Options.constraints\" title=\"django.db.models.Options.constraints\"><code class=\"xref py py-attr docutils literal notranslate\">Meta.constraints</code></a> alternativ.</p>\n<aside class=\"admonition-referencing-built-in-constraints admonition\" role=\"note\">\n<p class=\"admonition-title\">Hänvisning till inbyggda begränsningar</p>\n<p>Begränsningar definieras i <code class=\"docutils literal notranslate\">django.db.models.constraints</code>, men för enkelhetens skull importeras de till <a class=\"reference internal\" href=\"/sv/6.0/topics/db/models/#module-django.db.models\" title=\"django.db.models\"><code class=\"xref py py-mod docutils literal notranslate\">django.db.models</code></a>. Standardkonventionen är att använda <code class=\"docutils literal notranslate\">from django.db import models</code> och hänvisa till begränsningarna som <code class=\"docutils literal notranslate\">models.&lt;Foo&gt;Constraint</code>.</p>\n</aside>\n<aside class=\"admonition-constraints-in-abstract-base-classes admonition\" role=\"note\">\n<p class=\"admonition-title\">Begränsningar i abstrakta basklasser</p>\n<p>Du måste alltid ange ett unikt namn för begränsningen. Därför kan du normalt inte ange en begränsning för en abstrakt basklass, eftersom alternativet <a class=\"reference internal\" href=\"/sv/6.0/ref/models/options/#django.db.models.Options.constraints\" title=\"django.db.models.Options.constraints\"><code class=\"xref py py-attr docutils literal notranslate\">Meta.constraints</code></a> ärvs av underklasser, med exakt samma värden för attributen (inklusive <code class=\"docutils literal notranslate\">name</code>) varje gång. För att undvika namnskollisioner kan en del av namnet innehålla <code class=\"docutils literal notranslate\">’%(app_label)s’</code> och <code class=\"docutils literal notranslate\">’%(class)s’</code>, som ersätts med respektive app-etikett och klassnamn i gemener för den konkreta modellen. Till exempel:</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>CheckConstraint<span class=\"p\">(</span>condition<span class=\"o\">=</span>Q<span class=\"p\">(</span>age__gte<span class=\"o\">=</span><span class=\"mi\">18</span><span class=\"p\">),</span> name<span class=\"o\">=</span><span class=\"s2\">&quot;</span><span class=\"si\">%(app_label)s</span><span class=\"s2\">_</span><span class=\"si\">%(class)s</span><span class=\"s2\">_is_adult&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n</aside>\n<aside class=\"admonition-validation-of-constraints admonition\" role=\"note\">\n<p class=\"admonition-title\">Validering av begränsningar</p>\n<p>Begränsningar kontrolleras under <a class=\"reference internal\" href=\"/sv/6.0/ref/models/instances/#validating-objects\"><span class=\"std std-ref\">modellvalidering</span></a>.</p>\n</aside>\n<section id=\"baseconstraint\">\n<h2><code class=\"docutils literal notranslate\">BaseConstraint</code><a class=\"heading-anchor\" href=\"#baseconstraint\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.BaseConstraint\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">BaseConstraint</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>name</em>, <em class=\"sig-param\">violation_error_code<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">violation_error_message<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.BaseConstraint\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Basklass för alla begränsningar. Underklasser måste implementera metoderna <code class=\"docutils literal notranslate\">constraint_sql()</code>, <code class=\"docutils literal notranslate\">create_sql()</code>, <code class=\"docutils literal notranslate\">remove_sql()</code> och <code class=\"docutils literal notranslate\">validate()</code>.</p>\n</dd></dl>\n\n<p>Alla begränsningar har följande parametrar gemensamt:</p>\n<section id=\"name\">\n<h3><code class=\"docutils literal notranslate\">namn</code><a class=\"heading-anchor\" href=\"#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.BaseConstraint.name\">\n<span class=\"sig-prename descclassname\">BaseConstraint.</span><span class=\"sig-name descname\">name</span><a class=\"heading-anchor\" href=\"#django.db.models.BaseConstraint.name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Namnet på begränsningen. Du måste alltid ange ett unikt namn för begränsningen.</p>\n</section>\n<section id=\"violation-error-code\">\n<h3><code class=\"docutils literal notranslate\">Felkod för överträdelse</code><a class=\"heading-anchor\" href=\"#violation-error-code\"><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.BaseConstraint.violation_error_code\">\n<span class=\"sig-prename descclassname\">BaseConstraint.</span><span class=\"sig-name descname\">violation_error_code</span><a class=\"heading-anchor\" href=\"#django.db.models.BaseConstraint.violation_error_code\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Den felkod som används när <code class=\"docutils literal notranslate\">ValidationError</code> uppstår under <a class=\"reference internal\" href=\"/sv/6.0/ref/models/instances/#validating-objects\"><span class=\"std std-ref\">modellvalidering</span></a>. Standardvärdet är <code class=\"docutils literal notranslate\">None</code>.</p>\n</section>\n<section id=\"violation-error-message\">\n<h3><code class=\"docutils literal notranslate\">avvikelse_felmeddelande</code><a class=\"heading-anchor\" href=\"#violation-error-message\"><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.BaseConstraint.violation_error_message\">\n<span class=\"sig-prename descclassname\">BaseConstraint.</span><span class=\"sig-name descname\">violation_error_message</span><a class=\"heading-anchor\" href=\"#django.db.models.BaseConstraint.violation_error_message\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Det felmeddelande som används när <code class=\"docutils literal notranslate\">ValidationError</code> uppstår under <a class=\"reference internal\" href=\"/sv/6.0/ref/models/instances/#validating-objects\"><span class=\"std std-ref\">modellvalidering</span></a>. Standard är <code class=\"docutils literal notranslate\">&quot;Begränsningen &quot;%(name)s&quot; har brutits.&quot;</code>.</p>\n</section>\n<section id=\"validate\">\n<h3><code class=\"docutils literal notranslate\">validate()</code><a class=\"heading-anchor\" href=\"#validate\"><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.BaseConstraint.validate\">\n<span class=\"sig-prename descclassname\">BaseConstraint.</span><span class=\"sig-name descname\">validate</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">model</em>, <em class=\"sig-param\">instance</em>, <em class=\"sig-param\">exclude<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">using<span class=\"o\">=</span><span class=\"default_value\">DEFAULT_DB_ALIAS</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.BaseConstraint.validate\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Validerar att begränsningen, som definierats i <code class=\"docutils literal notranslate\">model</code>, respekteras i <code class=\"docutils literal notranslate\">instance</code>. Detta innebär att en databasfråga görs för att säkerställa att begränsningen respekteras. Om fält i listan <code class=\"docutils literal notranslate\">exclude</code> behövs för att validera begränsningen ignoreras begränsningen.</p>\n<p>Ger upphov till ett <code class=\"docutils literal notranslate\">ValidationError</code> om begränsningen inte uppfylls.</p>\n<p>Denna metod måste implementeras av en subklass.</p>\n</section>\n</section>\n<section id=\"checkconstraint\">\n<h2><code class=\"docutils literal notranslate\">CheckConstraint</code><a class=\"heading-anchor\" href=\"#checkconstraint\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.CheckConstraint\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">CheckConstraint</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"keyword-only-separator o\"><abbr title=\"Keyword-only parameters separator (PEP 3102)\">*</abbr></span></em>, <em class=\"sig-param\">condition</em>, <em class=\"sig-param\">name</em>, <em class=\"sig-param\">violation_error_code<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">violation_error_message<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.CheckConstraint\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Skapar en kontrollbegränsning i databasen.</p>\n</dd></dl>\n\n<section id=\"condition\">\n<h3><code class=\"docutils literal notranslate\">villkor</code><a class=\"heading-anchor\" href=\"#condition\"><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.CheckConstraint.condition\">\n<span class=\"sig-prename descclassname\">CheckConstraint.</span><span class=\"sig-name descname\">condition</span><a class=\"heading-anchor\" href=\"#django.db.models.CheckConstraint.condition\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Ett <a class=\"reference internal\" href=\"/sv/6.0/ref/models/querysets/#django.db.models.Q\" title=\"django.db.models.Q\"><code class=\"xref py py-class docutils literal notranslate\">Q</code></a>-objekt eller boolean <a class=\"reference internal\" href=\"/sv/6.0/ref/models/expressions/#django.db.models.Expression\" title=\"django.db.models.Expression\"><code class=\"xref py py-class docutils literal notranslate\">Expression</code></a> som anger den villkorliga kontroll som du vill att begränsningen ska genomdriva.</p>\n<p>Till exempel:</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>CheckConstraint<span class=\"p\">(</span>condition<span class=\"o\">=</span>Q<span class=\"p\">(</span>age__gte<span class=\"o\">=</span><span class=\"mi\">18</span><span class=\"p\">),</span> name<span class=\"o\">=</span><span class=\"s2\">&quot;age_gte_18&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>säkerställer att åldersfältet aldrig är mindre än 18.</p>\n<aside class=\"admonition-expression-order admonition\" role=\"note\">\n<p class=\"admonition-title\">Uttrycksordning</p>\n<p>ordningen på <code class=\"docutils literal notranslate\">Q</code>-argument bevaras inte nödvändigtvis, men ordningen på själva <code class=\"docutils literal notranslate\">Q</code>-uttrycken bevaras. Detta kan vara viktigt för databaser som av prestandaskäl bevarar ordningsföljden på uttryck för kontrollbegränsningar. Använd t.ex. följande format om ordningen är viktig:</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>CheckConstraint<span class=\"p\">(</span>\n    condition<span class=\"o\">=</span>Q<span class=\"p\">(</span>age__gte<span class=\"o\">=</span><span class=\"mi\">18</span><span class=\"p\">)</span> <span class=\"o\">&amp;</span> Q<span class=\"p\">(</span>expensive_check<span class=\"o\">=</span>condition<span class=\"p\">),</span>\n    name<span class=\"o\">=</span><span class=\"s2\">&quot;age_gte_18_and_others&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n</aside>\n<aside class=\"admonition-oracle-23c admonition\" role=\"note\">\n<p class=\"admonition-title\">Oracle &lt; 23c</p>\n<p>Kontroller med nollställbara fält på Oracle &lt; 23c måste innehålla ett villkor som tillåter <code class=\"docutils literal notranslate\">NULL</code>-värden för att <a class=\"reference internal\" href=\"#django.db.models.BaseConstraint.validate\" title=\"django.db.models.BaseConstraint.validate\"><code class=\"xref py py-meth docutils literal notranslate\">validate()</code></a> ska fungera på samma sätt som validering av kontrollbegränsningar. Till exempel:, om <code class=\"docutils literal notranslate\">age</code> är ett nollställbart fält:</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>CheckConstraint<span class=\"p\">(</span>condition<span class=\"o\">=</span>Q<span class=\"p\">(</span>age__gte<span class=\"o\">=</span><span class=\"mi\">18</span><span class=\"p\">)</span> <span class=\"o\">|</span> Q<span class=\"p\">(</span>age__isnull<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">),</span> name<span class=\"o\">=</span><span class=\"s2\">&quot;age_gte_18&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n</aside>\n</section>\n</section>\n<section id=\"uniqueconstraint\">\n<h2><code class=\"docutils literal notranslate\">Unik begränsning</code><a class=\"heading-anchor\" href=\"#uniqueconstraint\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.UniqueConstraint\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">UniqueConstraint</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>expressions</em>, <em class=\"sig-param\">fields<span class=\"o\">=</span><span class=\"default_value\">()</span></em>, <em class=\"sig-param\">name<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">condition<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">deferrable<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">include<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">opclasses<span class=\"o\">=</span><span class=\"default_value\">()</span></em>, <em class=\"sig-param\">nulls_distinct<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">violation_error_code<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">violation_error_message<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.UniqueConstraint\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Creates a uniqueness guarantee in the database, enforced by either a\nunique constraint or a unique index depending on the options used.</p>\n</dd></dl>\n\n<aside class=\"admonition-constraint-vs-index-implementation admonition\" role=\"note\">\n<p class=\"admonition-title\">Constraint vs. index implementation</p>\n<p>Setting only <a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.fields\" title=\"django.db.models.UniqueConstraint.fields\"><code class=\"xref py py-attr docutils literal notranslate\">UniqueConstraint.fields</code></a> creates a true database\nconstraint (<code class=\"docutils literal notranslate\">ADD CONSTRAINT ... UNIQUE</code>). Specifying any of\n<a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.expressions\" title=\"django.db.models.UniqueConstraint.expressions\"><code class=\"xref py py-attr docutils literal notranslate\">UniqueConstraint.expressions</code></a>, <a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.opclasses\" title=\"django.db.models.UniqueConstraint.opclasses\"><code class=\"xref py py-attr docutils literal notranslate\">UniqueConstraint.opclasses</code></a>,\n<a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.condition\" title=\"django.db.models.UniqueConstraint.condition\"><code class=\"xref py py-attr docutils literal notranslate\">UniqueConstraint.condition</code></a>, or <a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.include\" title=\"django.db.models.UniqueConstraint.include\"><code class=\"xref py py-attr docutils literal notranslate\">UniqueConstraint.include</code></a>\ncreates a unique index (<code class=\"docutils literal notranslate\">CREATE UNIQUE INDEX</code>) instead.</p>\n<p>In this documentation, the term ”unique constraint” is used for both\ncases to mean a uniqueness guarantee enforced by the database.</p>\n</aside>\n<section id=\"expressions\">\n<h3><code class=\"docutils literal notranslate\">uttryck</code><a class=\"heading-anchor\" href=\"#expressions\"><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.UniqueConstraint.expressions\">\n<span class=\"sig-prename descclassname\">UniqueConstraint.</span><span class=\"sig-name descname\">expressions</span><a class=\"heading-anchor\" href=\"#django.db.models.UniqueConstraint.expressions\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Det positionella argumentet <code class=\"docutils literal notranslate\">*expressions</code> gör det möjligt att skapa funktionella unika begränsningar för uttryck och databasfunktioner.</p>\n<p>Till exempel:</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>UniqueConstraint<span class=\"p\">(</span>Lower<span class=\"p\">(</span><span class=\"s2\">&quot;name&quot;</span><span class=\"p\">)</span><span class=\"o\">.</span>desc<span class=\"p\">(),</span> <span class=\"s2\">&quot;category&quot;</span><span class=\"p\">,</span> name<span class=\"o\">=</span><span class=\"s2\">&quot;unique_lower_name_category&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>skapar en unik begränsning på det gemena värdet i fältet <code class=\"docutils literal notranslate\">name</code> i fallande ordning och fältet <code class=\"docutils literal notranslate\">category</code> i stigande ordning som standard.</p>\n<p>Funktionella unika begränsningar har samma databasrestriktioner som <a class=\"reference internal\" href=\"/sv/6.0/ref/models/indexes/#django.db.models.Index.expressions\" title=\"django.db.models.Index.expressions\"><code class=\"xref py py-attr docutils literal notranslate\">Index.expressions</code></a>.</p>\n</section>\n<section id=\"fields\">\n<h3><code class=\"docutils literal notranslate\">fält</code><a class=\"heading-anchor\" href=\"#fields\"><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.UniqueConstraint.fields\">\n<span class=\"sig-prename descclassname\">UniqueConstraint.</span><span class=\"sig-name descname\">fields</span><a class=\"heading-anchor\" href=\"#django.db.models.UniqueConstraint.fields\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>En lista med fältnamn som anger den unika uppsättning kolumner som du vill att begränsningen ska genomdriva.</p>\n<p>Till exempel:</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>UniqueConstraint<span class=\"p\">(</span>fields<span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;room&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;date&quot;</span><span class=\"p\">],</span> name<span class=\"o\">=</span><span class=\"s2\">&quot;unique_booking&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>säkerställer att varje rum endast kan bokas en gång per datum.</p>\n</section>\n<section id=\"id1\">\n<h3><code class=\"docutils literal notranslate\">villkor</code><a class=\"heading-anchor\" href=\"#id1\"><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.UniqueConstraint.condition\">\n<span class=\"sig-prename descclassname\">UniqueConstraint.</span><span class=\"sig-name descname\">condition</span><a class=\"heading-anchor\" href=\"#django.db.models.UniqueConstraint.condition\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Ett <a class=\"reference internal\" href=\"/sv/6.0/ref/models/querysets/#django.db.models.Q\" title=\"django.db.models.Q\"><code class=\"xref py py-class docutils literal notranslate\">Q</code></a>-objekt som anger det villkor du vill att begränsningen ska genomdriva.</p>\n<p>Till exempel:</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>UniqueConstraint<span class=\"p\">(</span>fields<span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;user&quot;</span><span class=\"p\">],</span> condition<span class=\"o\">=</span>Q<span class=\"p\">(</span>status<span class=\"o\">=</span><span class=\"s2\">&quot;DRAFT&quot;</span><span class=\"p\">),</span> name<span class=\"o\">=</span><span class=\"s2\">&quot;unique_draft_user&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>säkerställer att varje användare endast har ett utkast.</p>\n<p>Dessa villkor har samma databasrestriktioner som <a class=\"reference internal\" href=\"/sv/6.0/ref/models/indexes/#django.db.models.Index.condition\" title=\"django.db.models.Index.condition\"><code class=\"xref py py-attr docutils literal notranslate\">Index.condition</code></a>.</p>\n</section>\n<section id=\"deferrable\">\n<h3><code class=\"docutils literal notranslate\">deferrable</code><a class=\"heading-anchor\" href=\"#deferrable\"><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.UniqueConstraint.deferrable\">\n<span class=\"sig-prename descclassname\">UniqueConstraint.</span><span class=\"sig-name descname\">deferrable</span><a class=\"heading-anchor\" href=\"#django.db.models.UniqueConstraint.deferrable\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Ange denna parameter för att skapa en uppskjutbar unik begränsning. Accepterade värden är <code class=\"docutils literal notranslate\">Deferrable.DEFERRED</code> eller <code class=\"docutils literal notranslate\">Deferrable.IMMEDIATE</code>. Till exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> Deferrable<span class=\"p\">,</span> UniqueConstraint\n\nUniqueConstraint<span class=\"p\">(</span>\n    name<span class=\"o\">=</span><span class=\"s2\">&quot;unique_order&quot;</span><span class=\"p\">,</span>\n    fields<span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;order&quot;</span><span class=\"p\">],</span>\n    deferrable<span class=\"o\">=</span>Deferrable<span class=\"o\">.</span>DEFERRED<span class=\"p\">,</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p>Som standard är begränsningar inte uppskjutna. En uppskjuten begränsning kommer inte att verkställas förrän i slutet av transaktionen. En omedelbar begränsning kommer att verkställas omedelbart efter varje kommando.</p>\n<p>Unique constraints with <a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.condition\" title=\"django.db.models.UniqueConstraint.condition\"><code class=\"xref py py-attr docutils literal notranslate\">condition</code></a>,\n<a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.include\" title=\"django.db.models.UniqueConstraint.include\"><code class=\"xref py py-attr docutils literal notranslate\">include</code></a>, <a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.opclasses\" title=\"django.db.models.UniqueConstraint.opclasses\"><code class=\"xref py py-attr docutils literal notranslate\">opclasses</code></a>, or\n<a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.expressions\" title=\"django.db.models.UniqueConstraint.expressions\"><code class=\"xref py py-attr docutils literal notranslate\">expressions</code></a> may be implemented as unique indexes\nrather than unique constraints. In that case, <code class=\"docutils literal notranslate\">deferrable</code> cannot be set.</p>\n<aside class=\"admonition-mysql-mariadb-and-sqlite admonition\" role=\"note\">\n<p class=\"admonition-title\">MySQL, MariaDB och SQLite.</p>\n<p>Deferrable unique constraints ignoreras i MySQL, MariaDB och SQLite eftersom de inte har stöd för dem.</p>\n</aside>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Varning</p>\n<p>Uppskjutna unika begränsningar kan leda till en ”prestandaförlust” &lt;<a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/sql-createtable.html#id-1.9.3.85.9.4\">https://www.postgresql.org/docs/current/sql-createtable.html#id-1.9.3.85.9.4</a>&gt;`_.</p>\n</aside>\n</section>\n<section id=\"include\">\n<h3><code class=\"docutils literal notranslate\">inkludera</code><a class=\"heading-anchor\" href=\"#include\"><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.UniqueConstraint.include\">\n<span class=\"sig-prename descclassname\">UniqueConstraint.</span><span class=\"sig-name descname\">include</span><a class=\"heading-anchor\" href=\"#django.db.models.UniqueConstraint.include\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>En lista eller tupel med namnen på de fält som ska ingå i det täckande unika indexet som icke-nyckelkolumner. På så sätt kan skanningar med enbart index användas för frågor som endast väljer inkluderade fält (<a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.include\" title=\"django.db.models.UniqueConstraint.include\"><code class=\"xref py py-attr docutils literal notranslate\">include</code></a>) och endast filtrerar efter unika fält (<a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.fields\" title=\"django.db.models.UniqueConstraint.fields\"><code class=\"xref py py-attr docutils literal notranslate\">fields</code></a>).</p>\n<p>Till exempel:</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>UniqueConstraint<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;unique_booking&quot;</span><span class=\"p\">,</span> fields<span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;room&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;date&quot;</span><span class=\"p\">],</span> include<span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;full_name&quot;</span><span class=\"p\">])</span>\n</code></pre></div>\n<p>tillåter filtrering på <code class=\"docutils literal notranslate\">rum</code> och <code class=\"docutils literal notranslate\">datum</code>, även val av <code class=\"docutils literal notranslate\">full_name</code>, samtidigt som data endast hämtas från indexet.</p>\n<p>Unika begränsningar med kolumner som inte är nycklar ignoreras för databaser förutom PostgreSQL.</p>\n<p>Icke-nyckelkolumner har samma databasrestriktioner som <a class=\"reference internal\" href=\"/sv/6.0/ref/models/indexes/#django.db.models.Index.include\" title=\"django.db.models.Index.include\"><code class=\"xref py py-attr docutils literal notranslate\">Index.include</code></a>.</p>\n</section>\n<section id=\"opclasses\">\n<h3><code class=\"docutils literal notranslate\">opklasser</code><a class=\"heading-anchor\" href=\"#opclasses\"><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.UniqueConstraint.opclasses\">\n<span class=\"sig-prename descclassname\">UniqueConstraint.</span><span class=\"sig-name descname\">opclasses</span><a class=\"heading-anchor\" href=\"#django.db.models.UniqueConstraint.opclasses\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Namnen på <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/indexes-opclass.html\">PostgreSQL-operatörsklasserna</a> som ska användas för detta unika index. Om du behöver en anpassad operatörsklass måste du tillhandahålla en för varje fält i indexet.</p>\n<p>Till exempel:</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>UniqueConstraint<span class=\"p\">(</span>\n    name<span class=\"o\">=</span><span class=\"s2\">&quot;unique_username&quot;</span><span class=\"p\">,</span> fields<span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;username&quot;</span><span class=\"p\">],</span> opclasses<span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;varchar_pattern_ops&quot;</span><span class=\"p\">]</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p>skapar ett unikt index på <code class=\"docutils literal notranslate\">username</code> med hjälp av <code class=\"docutils literal notranslate\">varchar_pattern_ops</code>.</p>\n<p>`` Opclasses`` ignoreras för databaser förutom PostgreSQL.</p>\n</section>\n<section id=\"nulls-distinct\">\n<h3><code class=\"docutils literal notranslate\">nulls_distinct</code><a class=\"heading-anchor\" href=\"#nulls-distinct\"><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.UniqueConstraint.nulls_distinct\">\n<span class=\"sig-prename descclassname\">UniqueConstraint.</span><span class=\"sig-name descname\">nulls_distinct</span><a class=\"heading-anchor\" href=\"#django.db.models.UniqueConstraint.nulls_distinct\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Om rader som innehåller <code class=\"docutils literal notranslate\">NULL</code>-värden som omfattas av det unika villkoret ska anses vara skilda från varandra. Standardvärdet är <code class=\"docutils literal notranslate\">None</code> som använder databasens standardvärde som är <code class=\"docutils literal notranslate\">True</code> på de flesta backends.</p>\n<p>Till exempel:</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>UniqueConstraint<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;ordering&quot;</span><span class=\"p\">,</span> fields<span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s2\">&quot;ordering&quot;</span><span class=\"p\">],</span> nulls_distinct<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>skapar en unik begränsning som endast tillåter en rad att lagra ett <code class=\"docutils literal notranslate\">NULL</code>-värde i kolumnen <code class=\"docutils literal notranslate\">ordering</code>.</p>\n<p>Unika begränsningar med <code class=\"docutils literal notranslate\">nulls_distinct</code> ignoreras för databaser förutom PostgreSQL 15+.</p>\n</section>\n<section id=\"id2\">\n<h3><code class=\"docutils literal notranslate\">Felkod för överträdelse</code><a class=\"heading-anchor\" href=\"#id2\"><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.UniqueConstraint.violation_error_code\">\n<span class=\"sig-prename descclassname\">UniqueConstraint.</span><span class=\"sig-name descname\">violation_error_code</span><a class=\"heading-anchor\" href=\"#django.db.models.UniqueConstraint.violation_error_code\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Den felkod som används när ett <code class=\"docutils literal notranslate\">ValidationError</code> uppstår under <a class=\"reference internal\" href=\"/sv/6.0/ref/models/instances/#validating-objects\"><span class=\"std std-ref\">modellvalidering</span></a>.</p>\n<p>Standardvärdet är <a class=\"reference internal\" href=\"#django.db.models.BaseConstraint.violation_error_code\" title=\"django.db.models.BaseConstraint.violation_error_code\"><code class=\"xref py py-attr docutils literal notranslate\">BaseConstraint.violation_error_code</code></a>, när antingen <a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.condition\" title=\"django.db.models.UniqueConstraint.condition\"><code class=\"xref py py-attr docutils literal notranslate\">UniqueConstraint.condition</code></a> har angetts eller <a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.fields\" title=\"django.db.models.UniqueConstraint.fields\"><code class=\"xref py py-attr docutils literal notranslate\">UniqueConstraint.fields</code></a> inte har angetts.</p>\n<p>Om <a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.fields\" title=\"django.db.models.UniqueConstraint.fields\"><code class=\"xref py py-attr docutils literal notranslate\">UniqueConstraint.fields</code></a> anges utan <a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.condition\" title=\"django.db.models.UniqueConstraint.condition\"><code class=\"xref py py-attr docutils literal notranslate\">UniqueConstraint.condition</code></a>, används som standard felkoden <a class=\"reference internal\" href=\"/sv/6.0/ref/models/options/#django.db.models.Options.unique_together\" title=\"django.db.models.Options.unique_together\"><code class=\"xref py py-attr docutils literal notranslate\">Meta.unique_together</code></a> när det finns flera fält, och felkoden <a class=\"reference internal\" href=\"/sv/6.0/ref/models/fields/#django.db.models.Field.unique\" title=\"django.db.models.Field.unique\"><code class=\"xref py py-attr docutils literal notranslate\">Field.unique</code></a> när det finns ett enda fält.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>I äldre versioner användes inte den medföljande <a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.violation_error_code\" title=\"django.db.models.UniqueConstraint.violation_error_code\"><code class=\"xref py py-attr docutils literal notranslate\">UniqueConstraint.violation_error_code</code></a> när <a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.fields\" title=\"django.db.models.UniqueConstraint.fields\"><code class=\"xref py py-attr docutils literal notranslate\">UniqueConstraint.fields</code></a> angavs utan <a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.condition\" title=\"django.db.models.UniqueConstraint.condition\"><code class=\"xref py py-attr docutils literal notranslate\">UniqueConstraint.condition</code></a>.</p>\n</aside>\n</section>\n<section id=\"id3\">\n<h3><code class=\"docutils literal notranslate\">avvikelse_felmeddelande</code><a class=\"heading-anchor\" href=\"#id3\"><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.UniqueConstraint.violation_error_message\">\n<span class=\"sig-prename descclassname\">UniqueConstraint.</span><span class=\"sig-name descname\">violation_error_message</span><a class=\"heading-anchor\" href=\"#django.db.models.UniqueConstraint.violation_error_message\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Det felmeddelande som används när ett <code class=\"docutils literal notranslate\">ValidationError</code> uppstår under <a class=\"reference internal\" href=\"/sv/6.0/ref/models/instances/#validating-objects\"><span class=\"std std-ref\">modellvalidering</span></a>.</p>\n<p>Standardvärdet är <a class=\"reference internal\" href=\"#django.db.models.BaseConstraint.violation_error_message\" title=\"django.db.models.BaseConstraint.violation_error_message\"><code class=\"xref py py-attr docutils literal notranslate\">BaseConstraint.violation_error_message</code></a>, när antingen <a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.condition\" title=\"django.db.models.UniqueConstraint.condition\"><code class=\"xref py py-attr docutils literal notranslate\">UniqueConstraint.condition</code></a> har angetts eller <a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.fields\" title=\"django.db.models.UniqueConstraint.fields\"><code class=\"xref py py-attr docutils literal notranslate\">UniqueConstraint.fields</code></a> inte har angetts.</p>\n<p>Om <a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.fields\" title=\"django.db.models.UniqueConstraint.fields\"><code class=\"xref py py-attr docutils literal notranslate\">UniqueConstraint.fields</code></a> anges utan <a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.condition\" title=\"django.db.models.UniqueConstraint.condition\"><code class=\"xref py py-attr docutils literal notranslate\">UniqueConstraint.condition</code></a>, används som standard felmeddelandet <a class=\"reference internal\" href=\"/sv/6.0/ref/models/options/#django.db.models.Options.unique_together\" title=\"django.db.models.Options.unique_together\"><code class=\"xref py py-attr docutils literal notranslate\">Meta.unique_together</code></a> när det finns flera fält, och felmeddelandet <a class=\"reference internal\" href=\"/sv/6.0/ref/models/fields/#django.db.models.Field.unique\" title=\"django.db.models.Field.unique\"><code class=\"xref py py-attr docutils literal notranslate\">Field.unique</code></a> när det finns ett enda fält.</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>I äldre versioner användes inte det medföljande <a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.violation_error_message\" title=\"django.db.models.UniqueConstraint.violation_error_message\"><code class=\"xref py py-attr docutils literal notranslate\">UniqueConstraint.violation_error_message</code></a> när <a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.fields\" title=\"django.db.models.UniqueConstraint.fields\"><code class=\"xref py py-attr docutils literal notranslate\">UniqueConstraint.fields</code></a> angavs utan <a class=\"reference internal\" href=\"#django.db.models.UniqueConstraint.condition\" title=\"django.db.models.UniqueConstraint.condition\"><code class=\"xref py py-attr docutils literal notranslate\">UniqueConstraint.condition</code></a>.</p>\n</aside>\n</section>\n</section>","rootId":"module-django.db.models.constraints","toc":[{"title":"BaseConstraint","anchor":"baseconstraint","children":[{"title":"namn","anchor":"name","children":[]},{"title":"Felkod för överträdelse","anchor":"violation-error-code","children":[]},{"title":"avvikelse_felmeddelande","anchor":"violation-error-message","children":[]},{"title":"validate()","anchor":"validate","children":[]}]},{"title":"CheckConstraint","anchor":"checkconstraint","children":[{"title":"villkor","anchor":"condition","children":[]}]},{"title":"Unik begränsning","anchor":"uniqueconstraint","children":[{"title":"uttryck","anchor":"expressions","children":[]},{"title":"fält","anchor":"fields","children":[]},{"title":"villkor","anchor":"id1","children":[]},{"title":"deferrable","anchor":"deferrable","children":[]},{"title":"inkludera","anchor":"include","children":[]},{"title":"opklasser","anchor":"opclasses","children":[]},{"title":"nulls_distinct","anchor":"nulls-distinct","children":[]},{"title":"Felkod för överträdelse","anchor":"id2","children":[]},{"title":"avvikelse_felmeddelande","anchor":"id3","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"API-referens","url":"/sv/6.0/ref/"},{"docname":"ref/models/index","title":"Modeller","url":"/sv/6.0/ref/models/"}],"prev":{"docname":"ref/models/indexes","title":"Referens till modellindex","url":"/sv/6.0/ref/models/indexes/"},"next":{"docname":"ref/models/meta","title":"Modell _meta API","url":"/sv/6.0/ref/models/meta/"},"formats":{"html":"/sv/6.0/ref/models/constraints/","markdown":"/sv/6.0/ref/models/constraints.md","json":"/sv/6.0/ref/models/constraints.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/ref/models/constraints.txt","official":"https://docs.djangoproject.com/sv/6.0/ref/models/constraints/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}