diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 994d0273f..79036e9c8 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -1100,6 +1100,9 @@ class ModelSerializer(Serializer): fields = self.get_default_field_names(declared_fields, info) if exclude is not None: + + # make sure all fields are unique + fields = set(fields) # If `Meta.exclude` is included, then remove those fields. for field_name in exclude: assert field_name in fields, ( @@ -1112,6 +1115,8 @@ class ModelSerializer(Serializer): ) fields.remove(field_name) + fields = list(fields) + return fields def get_default_field_names(self, declared_fields, model_info):