Constraints reference

New in Django 2.2:

The classes defined in this module create database constraints. They are addedin the model Meta.constraintsoption.

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

  • CheckConstraint.name
  • The name of the constraint.

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'],
name='unique_booking')
ensures each room can only be booked once for eachdate.

name

  • UniqueConstraint.name
  • The name of the constraint.

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.