---
title: "Tagairt srianta"
version: 5.2
locale: ga
source: https://docs.djangoproject.com/ga/5.2/ref/models/constraints/
canonical: https://djangodocs.dev/ga/5.2/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/5.2/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.

> **Deprecated since Django 5.0**
>
> Deprecated since version 5.0: Tá tacaíocht chun argóintí seasaimh a rith as a chur in iúl.

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")
> ```

> **Deprecated since Django 5.1**
>
> Deprecated since version 5.1: Tá an tréith ```seiceáil ``a dhíchur i bhfabhar ``coinníoll```.

## `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)`

Cruthaíonn sé srian uathúil sa bhunachar sonraí.

### `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.

> **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/5.2/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/5.2/ref/models/options/#django.db.models.Options.unique_together) error code when there are multiple
fields, and to the [`Field.unique`](/ga/5.2/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/5.2/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/5.2/ref/models/options/#django.db.models.Options.unique_together) error message when there are
multiple fields, and to the [`Field.unique`](/ga/5.2/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).
