Skip to content

Commit 33d3bd9

Browse files
author
Ryan P Kilby
committed
Fix Serializer exclude for declared fields
1 parent 0b72285 commit 33d3bd9

File tree

2 files changed

+4
-1
lines changed

2 files changed

+4
-1
lines changed

rest_framework/serializers.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1099,6 +1099,9 @@ def get_field_names(self, declared_fields, info):
10991099
# Use the default set of field names if `Meta.fields` is not specified.
11001100
fields = self.get_default_field_names(declared_fields, info)
11011101

1102+
# deduplicate field names (occurs when a declared fields matches a model field)
1103+
fields = list(OrderedDict.fromkeys(fields))
1104+
11021105
if exclude is not None:
11031106
# If `Meta.exclude` is included, then remove those fields.
11041107
for field_name in exclude:

tests/test_model_serializer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -908,7 +908,7 @@ class Meta:
908908
model = MetaClassTestModel
909909
exclude = ('text',)
910910

911-
assert list(ExampleSerializer().fields) == ['id', 'text']
911+
assert list(ExampleSerializer().fields) == ['id']
912912

913913

914914
class Issue2704TestCase(TestCase):

0 commit comments

Comments
 (0)