* type: Bug => Cleanup/optimization
Old description:
> 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
New description:
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'
}}}
--
--
Ticket URL: <https://code.djangoproject.com/ticket/34319#comment:2>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.