Fix: Explicit validation of custom field name unique constraint (#5647)

This commit is contained in:
shamoon
2024-02-03 12:51:26 -08:00
committed by GitHub
parent 6cf732e6ec
commit 6b34f592df
2 changed files with 35 additions and 1 deletions

View File

@@ -81,7 +81,7 @@ class MatchingModelSerializer(serializers.ModelSerializer):
slug = SerializerMethodField()
def validate(self, data):
# see https://github.com/encode/django-rest-framework/issues/7173
# TODO: remove pending https://github.com/encode/django-rest-framework/issues/7173
name = data["name"] if "name" in data else self.instance.name
owner = (
data["owner"]
@@ -441,6 +441,17 @@ class CustomFieldSerializer(serializers.ModelSerializer):
"data_type",
]
def validate(self, attrs):
# TODO: remove pending https://github.com/encode/django-rest-framework/issues/7173
name = attrs["name"] if "name" in attrs else self.instance.name
if ("name" in attrs) and self.Meta.model.objects.filter(
name=name,
).exists():
raise serializers.ValidationError(
{"error": "Object violates name unique constraint"},
)
return super().validate(attrs)
class ReadWriteSerializerMethodField(serializers.SerializerMethodField):
"""