From ab1d083fc2ac829e38b75f58e983e6bff5a8913d Mon Sep 17 00:00:00 2001 From: jackyliang Date: Wed, 15 Nov 2017 23:51:52 +0800 Subject: [PATCH] bugfix: fix exclude attribute won't work well when field duplicate declared in serializers --- rest_framework/serializers.py | 5 +++++ 1 file changed, 5 insertions(+) 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):