Move field check to validate_constraints()
This commit is contained in:
parent
d5f9fe60ba
commit
328bede9fb
|
@ -1441,7 +1441,15 @@ class Model(metaclass=ModelBase):
|
|||
try:
|
||||
constraint.validate(model_class, self, exclude=exclude, using=using)
|
||||
except ValidationError as e:
|
||||
if e.code == "unique" and len(constraint.fields) == 1:
|
||||
if (
|
||||
e.code == "unique"
|
||||
and len(constraint.fields) == 1
|
||||
and (
|
||||
constraint.condition is None
|
||||
or set(constraint.fields)
|
||||
== constraint.condition.referenced_base_fields
|
||||
)
|
||||
):
|
||||
errors.setdefault(constraint.fields[0], []).append(e)
|
||||
else:
|
||||
errors = e.update_error_dict(errors)
|
||||
|
|
|
@ -364,13 +364,8 @@ class UniqueConstraint(BaseConstraint):
|
|||
if (self.condition & Exists(queryset.filter(self.condition))).check(
|
||||
against, using=using
|
||||
):
|
||||
code = (
|
||||
"unique"
|
||||
if self.condition.referenced_base_fields == set(self.fields)
|
||||
else None
|
||||
)
|
||||
raise ValidationError(
|
||||
message=self.get_violation_error_message(), code=code
|
||||
message=self.get_violation_error_message(), code="unique"
|
||||
)
|
||||
except FieldError:
|
||||
pass
|
||||
|
|
Loading…
Reference in New Issue