﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
34319	Model.validate_constraints check for ValidationError code	Mateusz Kurowski	nobody	"Imagine scenario when i want to explicitly mark a field that model constraint should raise ValidationError for:


{{{
class CustomUniqueConstraint(UniqueConstraint):

    def validate(self, *args, **kwargs):
        try:
            value = super().validate(*args, **kwargs)
        except ValidationError as e:
            raise ValidationError(
                {
                    'email': e,
                }
            )
        return value


class AbstractUser(django.contrib.auth.models.AbstractUser):

    class Meta:
        abstract = True
        constraints = [
            CustomUniqueConstraint(
                Lower(""email""),
                name=""%(app_label)s_%(class)s_email_unique"",
            )
        ]
}}}


This wont work  because:

{{{
1425, in validate_constraints
    if e.code == ""unique"" and len(constraint.fields) == 1:
       ^^^^^^
AttributeError: 'ValidationError' object has no attribute 'code'
}}}


Simple fix: https://github.com/bukforks/django/commit/9454b2e2abf7eeadbffa50166b217b7b9cc3e2db"	Bug	new	Database layer (models, ORM)	4.1	Normal		Model, validate_constraints, ValidationError, code, message		Unreviewed	0	0	0	0	0	0
