fix: add model parents to create unique_constraint_by_fields

This commit is contained in:
Sergei Aleshin 2025-08-20 13:52:33 +04:00
parent c54c658cdd
commit 58e856527c
2 changed files with 4 additions and 8 deletions

View File

@ -1607,7 +1607,9 @@ class ModelSerializer(Serializer):
source_map[source].append(name) source_map[source].append(name)
unique_constraint_by_fields = { unique_constraint_by_fields = {
constraint.fields: constraint for constraint in self.Meta.model._meta.constraints constraint.fields: constraint
for model_cls in (self.Meta.model, *self.Meta.model._meta.parents)
for constraint in model_cls._meta.constraints
if isinstance(constraint, models.UniqueConstraint) if isinstance(constraint, models.UniqueConstraint)
} }

View File

@ -627,13 +627,7 @@ class UniqueConstraintCustomMessageCodeModel(models.Model):
fields=("username", "company_id"), fields=("username", "company_id"),
name="unique_username_company_custom_msg", name="unique_username_company_custom_msg",
violation_error_message="Username must be unique within a company.", violation_error_message="Username must be unique within a company.",
violation_error_code="duplicate_username", **(dict(violation_error_code="duplicate_username") if django_version[0] >= 5 else {}),
)
if django_version[0] >= 5
else models.UniqueConstraint(
fields=("username", "company_id"),
name="unique_username_company_custom_msg",
violation_error_message="Username must be unique within a company.",
), ),
models.UniqueConstraint( models.UniqueConstraint(
fields=("company_id", "role"), fields=("company_id", "role"),