===========================
Check constraints reference
===========================

.. module:: django.db.models.constraints

.. currentmodule:: django.db.models

.. versionadded:: 2.2

The ``CheckConstraint`` class creates database check constraints. They are
added in the model :attr:`Meta.constraints
<django.db.models.Options.constraints>` option. This document
explains the API references of :class:`CheckConstraint`.

.. admonition:: Referencing built-in constraints

    Constraints are defined in ``django.db.models.constraints``, but for
    convenience they're imported into :mod:`django.db.models`. The standard
    convention is to use ``from django.db import models`` and refer to the
    constraints as ``models.CheckConstraint``.

``CheckConstraint`` options
===========================

.. class:: CheckConstraint(*, check, name)

    Creates a check constraint in the database.

``check``
---------

.. attribute:: CheckConstraint.check

A :class:`Q` object 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.

``name``
--------

.. attribute:: CheckConstraint.name

The name of the constraint.
