---
title: "Tagairt srianta"
version: 6.0
locale: ga
source: https://docs.djangoproject.com/ga/6.0/ref/models/constraints/
canonical: https://djangodocs.dev/ga/6.0/ref/models/constraints/
---
# Tagairt srianta

Cruthaíonn na ranganna atá sainithe sa mhodúl seo srianta bunachar sonraí. \<django.db.models.Options.constraints\>Cuirtear iad leis sa rogha samhail: attr: Meta.Constraints .

> **Ag tagairt a dhéanamh ar srianta ionsuite**
>
> Sainmhínítear srianta in `django.db.models.restricints`, ach ar mhaithe le háisiúlacht déantar iad a allmhairiú chuig: mod: django.db.models. Is é an coinbhinsiún caighdeánach ná ó samhlacha allmhairiúcháin django.db a úsáid agus tagairt a dhéanamh do na srianta mar samhlacha. \<Foo\>Srianadh \`.

> **Srianta i ranganna bonn teibí**
>
> You must always specify a unique name for the constraint. As such, you
> cannot normally specify a constraint on an abstract base class, since the
> [`Meta.constraints`](/ga/6.0/ref/models/options/#django.db.models.Options.constraints) option is
> inherited by subclasses, with exactly the same values for the attributes
> (including `name`) each time. To work around name collisions, part of the
> name may contain `'%(app_label)s'` and `'%(class)s'`, which are
> replaced, respectively, by the lowercased app label and class name of the
> concrete model. For example:
>
> ```
> CheckConstraint(condition=Q(age__gte=18), name="%(app_label)s_%(class)s_is_adult")
> ```

> **Bailíochtú Srianta**
>
> \<validating-objects\>Déantar srianta a sheiceáil le linn an: ref: bailíochtú samhail .

## `BaseConstraint`

#### `class BaseConstraint(*name, violation_error_code=None, violation_error_message=None)`

Aicme bonn do gach srianta. Ní mór do fho-aicmí modhanna ```restricint_sql () ``, `create_sql ()```, remove\_sql () \`\`agus \`\`validate ()\` a chur i bhfeidhm.

Tá na paraiméadair seo a leanas i gcoiteann ag gach srianta:

### ainm \`

#### `BaseConstraint.name`

Ainm an srianta. Ní mór duit ainm uathúil a shonrú i gcónaí don srian.

### cód\_earráid\_shárú \`

#### `BaseConstraint.violation_error_code`

\<validating-objects\>An cód earráide a úsáidtear nuair a ardaítear `ValidationError` trí:ref: bailíochtú samhail \`. Réamhshocraithe go \`\`None\`.

### teachtaireachtaí earráid\_shárúcháin \`\`

#### `BaseConstraint.violation_error_message`

\<validating-objects\>An teachtaireacht earráide a úsáidtear nuair a ardaítear `ValidationError` trí:ref: bailíochtú samhail \`. Sárófar réamhshocraithe go \`"Scrianadh “% (name) s”.

### bailíochtú () \`\`

#### `BaseConstraint.validate(model, instance, exclude=None, using=DEFAULT_DB_ALIAS)`

Bailíonn sé go n-urramaítear an srian, a shainmhínítear ar samhail \`, ar an instance\`. Déanfaidh sé seo ceist ar an mbunachar sonraí chun a chinntiú go n-urramaítear an srian. Má theastaíonn réimsí sa liosta `eisiam` chun an srian a bhailíochtú, déantar neamhaird ar an srian.

Ardaigh `Error Validation` má sháraítear an srian.

Caithfidh fo-aicme an modh seo a chur i bhfeidhm.

## `Srianadh seiceála`

#### `class CheckConstraint(* (Keyword-only parameters separator (PEP 3102)), condition, name, violation_error_code=None, violation_error_message=None)`

Cruthaíonn sé srian seiceála sa bhunachar sonraí.

### `coinníoll`

#### `CheckConstraint.condition`

A: aicme: Q réad nó boolean:class: ~django.db.Models.Expression a shonraíonn an seiceáil choinníollach a theastaíonn uait an srian a fhorfheidhmiú.

Mar shampla:

```
CheckConstraint(condition=Q(age__gte=18), name="age_gte_18")
```

ensures the age field is never less than 18.

> **Ordú léirithe**
>
> Ní gá go gcaomhnófar ordú argóintí `Q`, ach caomhnófar ord na n-abhairtí `Q` féin. D'fhéadfadh sé seo a bheith tábhachtach do bhunachar sonraí a chaomhníonn ord léirithe srianta seiceála ar chúiseanna feidh Mar shampla, bain úsáid as an bhformáid seo a leanas má tá an t-ordú tábhachtach:
>
> ```
> CheckConstraint(
>     condition=Q(age__gte=18) & Q(expensive_check=condition),
>     name="age_gte_18_and_others",
> )
> ```

> **Oracle <23c**
>
> Ní mór coinníoll a bheith san áireamh ar sheiceálacha le réimsí in-neamhnaithe ar Oracle \<23c a cheadaíonn luachanna `NULL` d'fhonn:meth: ~BaseConstraint.validate iompar mar an gcéanna le bailíochtú srianta seiceála. Mar shampla, más réimse neamhnaithe é aois :
>
> ```
> CheckConstraint(condition=Q(age__gte=18) | Q(age__isnull=True), name="age_gte_18")
> ```

## `UniqueConstraint`

#### `class UniqueConstraint(*expressions, fields=(), name=None, condition=None, deferrable=None, include=None, opclasses=(), nulls_distinct=None, violation_error_code=None, violation_error_message=None)`

Creates a uniqueness guarantee in the database, enforced by either a
unique constraint or a unique index depending on the options used.

> **Constraint vs. index implementation**
>
> Setting only [`UniqueConstraint.fields`](#django.db.models.UniqueConstraint.fields) creates a true database
> constraint (`ADD CONSTRAINT ... UNIQUE`). Specifying any of
> [`UniqueConstraint.expressions`](#django.db.models.UniqueConstraint.expressions), [`UniqueConstraint.opclasses`](#django.db.models.UniqueConstraint.opclasses),
> [`UniqueConstraint.condition`](#django.db.models.UniqueConstraint.condition), or [`UniqueConstraint.include`](#django.db.models.UniqueConstraint.include)
> creates a unique index (`CREATE UNIQUE INDEX`) instead.
>
> In this documentation, the term "unique constraint" is used for both
> cases to mean a uniqueness guarantee enforced by the database.

### `léiritheach`

#### `UniqueConstraint.expressions`

Ligeann argóint seasaimh \* léirithe srianta feidhmiúla uathúla a chruthú ar nathanna agus ar fheidhmeanna bunachar sonraí.

Mar shampla:

```
UniqueConstraint(Lower("name").desc(), "category", name="unique_lower_name_category")
```

cruthaíonn sé srian uathúil ar luach íseal an réimse ainm in ord íslitheach agus an réimse catagóir san ord ardaitheach réamhshocraithe.

Tá na srianta bunachar sonraí céanna ag srianta uathúla feidhmiúla las:attr: Index.Expressions.

### réimsí \`\`

#### `UniqueConstraint.fields`

Liosta d'ainmneacha réimse a shonraíonn an tacar uathúil colún a theastaíonn uait an srian a fhorfheidhmiú.

Mar shampla:

```
UniqueConstraint(fields=["room", "date"], name="unique_booking")
```

ensures each room can only be booked once for each date.

### `coinníoll`

#### `UniqueConstraint.condition`

A: aicme: 'Q\` réad a shonraíonn an coinníoll a theastaíonn uait an srian a fhorfheidhmiú.

Mar shampla:

```
UniqueConstraint(fields=["user"], condition=Q(status="DRAFT"), name="unique_draft_user")
```

cinntíonn sé nach bhfuil ach dréacht amháin ag gach úsáideoir.

Tá na srianta bunachar sonraí céanna ag na coinníollacha seo las:attr: Index.Condition.

### `iarchurraithe`

#### `UniqueConstraint.deferrable`

Socraigh an paraiméadar seo chun srian uathúil in-iarchurtha a chruthú. Is iad na luachanna a nglactar leo ná `Deferrable.Ferred` nó `Deferrable.Immediate`. Mar shampla:

```
from django.db.models import Deferrable, UniqueConstraint

UniqueConstraint(
    name="unique_order",
    fields=["order"],
    deferrable=Deferrable.DEFERRED,
)
```

De réir réamhshocraithe ní chuirtear srianta ar iarchur. Ní chuirfear srian iarchurtha i bhfeidhm go dtí deireadh an idirbheart. Cuirfear srian láithreach i bhfeidhm díreach tar éis gach ordaithe.

Unique constraints with [`condition`](#django.db.models.UniqueConstraint.condition),
[`include`](#django.db.models.UniqueConstraint.include), [`opclasses`](#django.db.models.UniqueConstraint.opclasses), or
[`expressions`](#django.db.models.UniqueConstraint.expressions) may be implemented as unique indexes
rather than unique constraints. In that case, `deferrable` cannot be set.

> **MySQL, MariaDB, agus SQLite.**
>
> Deferrable unique constraints are ignored on MySQL, MariaDB, and SQLite as
> they do not support them.

> **Warning**
>
> \< <https://www.postgresql.org/docs/current/sql-createtable.html#id-1.9.3.85.9.4>\>D'fhéadfadh “pionós feidhmíochta” \_ a bheith mar thoradh ar srianta uathúla iarchurtha.

### san áireamh \`\`

#### `UniqueConstraint.include`

Liosta nó tuple d'ainmneacha na réimsí atá le cur san innéacs uathúil clúdaigh mar cholúin neamh-eochair. Ligeann sé seo scananna innéacs amháin a úsáid le haghaidh ceisteanna nach roghnaíonn ach réimsí san áireamh (:attr: ~UniqueConstraint.include) agus scagadh ach amháin de réir réimsí uathúla (:attr: ~UniqueConstraint.fields).

Mar shampla:

```
UniqueConstraint(name="unique_booking", fields=["room", "date"], include=["full_name"])
```

ceadóidh sé scagadh ar `seomra` agus `dáta`, ag roghnú `full_name` freisin, agus sonraí a thógáil ach ón innéacs.

Déantar neamhaird ar srianta uathúla le colúin neamh-eochair do bhunachair sonraí seachas PostgreSQL.

Tá na srianta bunachar sonraí céanna ag colúin neamh-eochair las:attr: Index.include.

### `opclasses`

#### `UniqueConstraint.opclasses`

\< <https://www.postgresql.org/docs/current/indexes-opclass.html>\>Ainmneacha na ranganna oibreora PostgreSQL \_ le húsáid don innéacs uathúil seo. Má theastaíonn rang oibreora saincheaptha uait, ní mór duit ceann a sholáthar do gach réimse san innéacs.

Mar shampla:

```
UniqueConstraint(
    name="unique_username", fields=["username"], opclasses=["varchar_pattern_ops"]
)
```

cruthaíonn innéacs uathúil ar ```ainm úsáideora ``ag baint úsáide as ``varchar_pattern_ops```.

Déantar neamhaird ar `opclasses` le haghaidh bunachair sonraí seachas PostgreSQL.

### `nulls_distint`

#### `UniqueConstraint.nulls_distinct`

Ba chóir sraitheanna ina bhfuil luachanna NULL\` atá clúdaithe leis an srian uathúil a mheas ar leith óna chéile. Is é an luach réamhshocraithe `None` a úsáideann réamhshocraithe an bunachar sonraí atá `True` ar fhormhór na gcúltaca.

Mar shampla:

```
UniqueConstraint(name="ordering", fields=["ordering"], nulls_distinct=False)
```

cruthaíonn srian uathúil nach gceadaíonn ach sraith amháin luach `NULL` a stóráil sa cholún ordú .

Déantar neamhaird ar srianta uathúla le nulls\_distingt\` do bhunachair sonraí seachas PostgreSQL 15+.

### cód\_earráid\_shárú \`

#### `UniqueConstraint.violation_error_code`

The error code used when a `ValidationError` is raised during
[model validation](/ga/6.0/ref/models/instances/#validating-objects).

Defaults to [`BaseConstraint.violation_error_code`](#django.db.models.BaseConstraint.violation_error_code), when either
[`UniqueConstraint.condition`](#django.db.models.UniqueConstraint.condition) is set or [`UniqueConstraint.fields`](#django.db.models.UniqueConstraint.fields)
is not set.

If [`UniqueConstraint.fields`](#django.db.models.UniqueConstraint.fields) is set without a
[`UniqueConstraint.condition`](#django.db.models.UniqueConstraint.condition), defaults to the
[`Meta.unique_together`](/ga/6.0/ref/models/options/#django.db.models.Options.unique_together) error
code when there are multiple fields, and to the [`Field.unique`](/ga/6.0/ref/models/fields/#django.db.models.Field.unique) error
code when there is a single field.

> **Changed in Django 5.2**
>
> In older versions, the provided
> [`UniqueConstraint.violation_error_code`](#django.db.models.UniqueConstraint.violation_error_code) was not used when
> [`UniqueConstraint.fields`](#django.db.models.UniqueConstraint.fields) was set without a
> [`UniqueConstraint.condition`](#django.db.models.UniqueConstraint.condition).

### teachtaireachtaí earráid\_shárúcháin \`\`

#### `UniqueConstraint.violation_error_message`

The error message used when a `ValidationError` is raised during
[model validation](/ga/6.0/ref/models/instances/#validating-objects).

Defaults to [`BaseConstraint.violation_error_message`](#django.db.models.BaseConstraint.violation_error_message), when either
[`UniqueConstraint.condition`](#django.db.models.UniqueConstraint.condition) is set or [`UniqueConstraint.fields`](#django.db.models.UniqueConstraint.fields)
is not set.

If [`UniqueConstraint.fields`](#django.db.models.UniqueConstraint.fields) is set without a
[`UniqueConstraint.condition`](#django.db.models.UniqueConstraint.condition), defaults to the
[`Meta.unique_together`](/ga/6.0/ref/models/options/#django.db.models.Options.unique_together) error
message when there are multiple fields, and to the [`Field.unique`](/ga/6.0/ref/models/fields/#django.db.models.Field.unique) error
message when there is a single field.

> **Changed in Django 5.2**
>
> In older versions, the provided
> [`UniqueConstraint.violation_error_message`](#django.db.models.UniqueConstraint.violation_error_message) was not used when
> [`UniqueConstraint.fields`](#django.db.models.UniqueConstraint.fields) was set without a
> [`UniqueConstraint.condition`](#django.db.models.UniqueConstraint.condition).
