Hi David.

This is https://code.djangoproject.com/ticket/33996 I think — it's a
Release Blocker for 4.1.2
Your thoughts/review on work there would be welcome. :)

Kind Regards,

Carlton


On Thu, 8 Sept 2022 at 14:30, David Sanders <shang.xiao.sand...@gmail.com>
wrote:

> Hi folks,
>
> I've noticed a difference in the way check constraint validation behaves
> compared to the way Postgres (assuming similar behaviour in other DBs)
> validates when dealing with NULLs.
>
> Given a model with a simple positive check constraint:
>
> class Test(Model):
>     test = IntegerField(null=True)
>
>     class Meta:
>         constraints = [
>            CheckConstraint(check=Q(test__gte=0), name="positive"),
>         ]
>
> Then the an instance with a NULL will save but fail validation:
>
> test = Test()
> test.save()
> test.validate_constraints()
> ...
> E           django.core.exceptions.ValidationError: {'__all__':
> ['Constraint “positive” is violated.']}
>
>
> I believe this is due to the way validation is handled in the WHERE
> clause. I've trawled back through the PR discussion and original ticket
> as well as the validation code – I could see the original comment about
> moving validation to WHERE to get around issues with using SELECT but
> couldn't find any other mention about how NULLs should be handled.
>
> I wanted to check with folks here first before raising an issue. I'm not
> sure what the fix should be but I'd recommend at least adding a note in the
> docs if it's not fixable? :)
>
> Cheers,
> David
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django developers (Contributions to Django itself)" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to django-developers+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-developers/CADyZw-4uYZnpWgjOXT-Wa2BSs%2BG1f4PNFD0YDU096bK9Uzc0tw%40mail.gmail.com
> <https://groups.google.com/d/msgid/django-developers/CADyZw-4uYZnpWgjOXT-Wa2BSs%2BG1f4PNFD0YDU096bK9Uzc0tw%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers  (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-developers+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-developers/CAJwKpySQt%3DUtnDH7CfyzgQa2tsWk3eSY8fQNsEdiMa8LyZJctg%40mail.gmail.com.

Reply via email to