From 7714ccfeae969aca52ad46c1d69a13fac4086c08 Mon Sep 17 00:00:00 2001 From: David Sanders Date: Thu, 16 Nov 2023 21:56:36 +1100 Subject: [PATCH] Refs #34964 -- Doc'd that Q expression order is preserved. --- docs/ref/models/constraints.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/ref/models/constraints.txt b/docs/ref/models/constraints.txt index cc308cedf22..0d6d87afbe3 100644 --- a/docs/ref/models/constraints.txt +++ b/docs/ref/models/constraints.txt @@ -119,6 +119,18 @@ 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. +.. admonition:: Expression order + + ``Q`` argument order is not necessarily preserved, however the order of + ``Q`` expressions themselves are preserved. This may be important for + databases that preserve check constraint expression order for performance + reasons. For example, use the following format if order matters:: + + CheckConstraint( + check=Q(age__gte=18) & Q(expensive_check=condition), + name="age_gte_18_and_others", + ) + .. admonition:: Oracle Checks with nullable fields on Oracle must include a condition allowing for