#31530: Check that CheckConstraint.check and UniqueConstraint.condition don't 
span
joins.
-------------------------------------+-------------------------------------
     Reporter:  Simon Charette       |                    Owner:  nobody
         Type:                       |                   Status:  new
  Cleanup/optimization               |
    Component:  Database layer       |                  Version:  3.0
  (models, ORM)                      |
     Severity:  Normal               |               Resolution:
     Keywords:                       |             Triage Stage:  Accepted
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Changes (by felixxm):

 * stage:  Unreviewed => Accepted


Old description:

> Similar to #31410 but for `check` and `condition`.
>
> ---
>
> Not everyone is familiar with the fact database level constraint cannot
> span across tables and might be tempted to do
>

> {{{#!python
> class Person(models.Model):
>     age = models.PositiveSmallIntegerField()
>     parent = models.ForeignKey(self)
>
>     class Meta:
>         constraints = {
>             CheckConstraint(
>                 name='age_lt_parent', check=Q(age__lt=parent__age)
>             ),
>         }
> }}}
>
> Which we'll happily create migrations for but we'll then crash because we
> prevent JOINs when resolving `check`.

New description:

 Similar to #31410 but for `check` and `condition`.

 ----

 Not everyone is familiar with the fact database level constraint cannot
 span across tables and might be tempted to do


 {{{#!python
 class Person(models.Model):
     age = models.PositiveSmallIntegerField()
     parent = models.ForeignKey(self)

     class Meta:
         constraints = {
             CheckConstraint(
                 name='age_lt_parent', check=Q(age__lt=parent__age)
             ),
         }
 }}}

 Which we'll happily create migrations for but we'll then crash because we
 prevent JOINs when resolving `check`.

--

-- 
Ticket URL: <https://code.djangoproject.com/ticket/31530#comment:1>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/067.220955a11eded0d7a7bff81457152d74%40djangoproject.com.

Reply via email to