File tree 2 files changed +32
-1
lines changed
2 files changed +32
-1
lines changed Original file line number Diff line number Diff line change @@ -1212,7 +1212,7 @@ def get_extra_kwargs(self):
1212
1212
Return a dictionary mapping field names to a dictionary of
1213
1213
additional keyword arguments.
1214
1214
"""
1215
- extra_kwargs = getattr (self .Meta , 'extra_kwargs' , {})
1215
+ extra_kwargs = copy . deepcopy ( getattr (self .Meta , 'extra_kwargs' , {}) )
1216
1216
1217
1217
read_only_fields = getattr (self .Meta , 'read_only_fields' , None )
1218
1218
if read_only_fields is not None :
Original file line number Diff line number Diff line change @@ -909,3 +909,34 @@ class Meta:
909
909
serializer = TestSerializer ()
910
910
911
911
assert serializer .fields ['decimal_field' ].max_value == 3
912
+
913
+
914
+ class TestMetaInheritance (TestCase ):
915
+ def test_extra_kwargs_not_altered (self ):
916
+ class TestSerializer (serializers .ModelSerializer ):
917
+ non_model_field = serializers .CharField ()
918
+
919
+ class Meta :
920
+ model = OneFieldModel
921
+ read_only_fields = ('char_field' , 'non_model_field' )
922
+ fields = read_only_fields
923
+ extra_kwargs = {}
924
+
925
+ class ChildSerializer (TestSerializer ):
926
+ class Meta (TestSerializer .Meta ):
927
+ read_only_fields = ()
928
+
929
+ test_expected = dedent ("""
930
+ TestSerializer():
931
+ char_field = CharField(read_only=True)
932
+ non_model_field = CharField()
933
+ """ )
934
+
935
+ child_expected = dedent ("""
936
+ ChildSerializer():
937
+ char_field = CharField(max_length=100)
938
+ non_model_field = CharField()
939
+ """ )
940
+ self .assertEqual (unicode_repr (ChildSerializer ()), child_expected )
941
+ self .assertEqual (unicode_repr (TestSerializer ()), test_expected )
942
+ self .assertEqual (unicode_repr (ChildSerializer ()), child_expected )
You can’t perform that action at this time.
0 commit comments