diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 413aa5ded..7ef4ce3d7 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -1295,8 +1295,8 @@ class RecursiveField(Field): def __init__(self, **kwargs): field_kwargs = dict( - (key, value) - for key in kwargs + (key, kwargs[key]) + for key in kwargs if key in inspect.getargspec(Field.__init__) ) super(RecursiveField, self).__init__(**field_kwargs) @@ -1305,7 +1305,7 @@ class RecursiveField(Field): super(RecursiveField, self).bind(field_name, parent) real_dict = object.__getattribute__(self, '__dict__') - + if hasattr(parent, 'child') and parent.child is self: proxy_class = parent.parent.__class__ else: @@ -1329,6 +1329,7 @@ class RecursiveField(Field): else: real_dict[name] = value + class SerializerMethodField(Field): """ A read-only field that get its representation from calling a method on the diff --git a/tests/test_fields.py b/tests/test_fields.py index 3064a6056..e5ac02f51 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -358,6 +358,7 @@ class TestRecursiveField: assert serializer.validated_data == value, \ 'deserialized data does not match input' + # Tests for field input and output values. # ----------------------------------------