Constraints referenceLink to this heading
The classes defined in this module create database constraints. They are added
in the model Meta.constraints
option.
CheckConstraintLink to this heading
- class CheckConstraint(*, check, name)Link to this definition
Creates a check constraint in the database.
checkLink to this heading
- CheckConstraint.checkLink to this definition
A Q object or boolean Expression that
specifies the check you want the constraint to enforce.
For example, CheckConstraint(check=Q(age__gte=18), name='age_gte_18')
ensures the age field is never less than 18.
nameLink to this heading
- CheckConstraint.nameLink to this definition
The name of the constraint. You must always specify a unique name for the constraint.
UniqueConstraintLink to this heading
- class UniqueConstraint(*, fields, name, condition=None, deferrable=None, include=None, opclasses=())Link to this definition
Creates a unique constraint in the database.
fieldsLink to this heading
- UniqueConstraint.fieldsLink to this definition
A list of field names that specifies the unique set of columns you want the constraint to enforce.
For example, UniqueConstraint(fields=['room', 'date'],
name='unique_booking') ensures each room can only be booked once for each
date.
nameLink to this heading
- UniqueConstraint.nameLink to this definition
The name of the constraint. You must always specify a unique name for the constraint.
conditionLink to this heading
- UniqueConstraint.conditionLink to this definition
A Q object that specifies the condition you want the constraint to
enforce.
Sebagai contoh:
UniqueConstraint(fields=['user'], condition=Q(status='DRAFT'), name='unique_draft_user')
ensures that each user only has one draft.
These conditions have the same database restrictions as
Index.condition.
deferrableLink to this heading
- UniqueConstraint.deferrableLink to this definition
Set this parameter to create a deferrable unique constraint. Accepted values
are Deferrable.DEFERRED or Deferrable.IMMEDIATE. For example:
from django.db.models import Deferrable, UniqueConstraint
UniqueConstraint(
name='unique_order',
fields=['order'],
deferrable=Deferrable.DEFERRED,
)
By default constraints are not deferred. A deferred constraint will not be enforced until the end of the transaction. An immediate constraint will be enforced immediately after every command.
includeLink to this heading
- UniqueConstraint.includeLink to this definition
A list or tuple of the names of the fields to be included in the covering
unique index as non-key columns. This allows index-only scans to be used for
queries that select only included fields (include)
and filter only by unique fields (fields).
Sebagai contoh:
UniqueConstraint(name='unique_booking', fields=['room', 'date'], include=['full_name'])
will allow filtering on room and date, also selecting full_name,
while fetching data only from the index.
include is supported only on PostgreSQL.
Non-key columns have the same database restrictions as Index.include.
opclassesLink to this heading
- UniqueConstraint.opclassesLink to this definition
The names of the PostgreSQL operator classes to use for this unique index. If you require a custom operator class, you must provide one for each field in the index.
Sebagai contoh:
UniqueConstraint(name='unique_username', fields=['username'], opclasses=['varchar_pattern_ops'])
creates a unique index on username using varchar_pattern_ops.
opclasses are ignored for databases besides PostgreSQL.