Constraints reference
New in Django 2.2:
The classes defined in this module create database constraints. They are addedin the model Meta.constraints
option.
Referencing built-in constraints
Constraints are defined in django.db.models.constraints
, but forconvenience they're imported into django.db.models
. The standardconvention is to use from django.db import models
and refer to theconstraints as models.<Foo>Constraint
.
CheckConstraint
- class
CheckConstraint
(*, check, name)[源代码] - Creates a check constraint in the database.
check
CheckConstraint.
check
- A
Q
object that specifies the check you want the constraint toenforce.
For example, CheckConstraint(check=Q(age__gte=18), name='age_gte_18')
ensures the age field is never less than 18.
name
UniqueConstraint
- class
UniqueConstraint
(*, fields, name)[源代码] - Creates a unique constraint in the database.
fields
UniqueConstraint.
fields
- A list of field names that specifies the unique set of columns you want theconstraint to enforce.
For example, UniqueConstraint(fields=['room', 'date'],
ensures each room can only be booked once for eachdate.
name='unique_booking')
name
condition
UniqueConstraint.
condition
- A
Q
object that specifies the condition you want the constraint toenforce.
For example, UniqueConstraint(fields=['user'], condition=Q(status='DRAFT')
ensures that each user only has one draft.
These conditions have the same database restrictions asIndex.condition
.