code: def to_internal_value(self, data):
          
          # for EmbeddedDocumentSerializers create initial data
          # so that _get_dynamic_data could use them
          for field in self._writable_fields:
              if isinstance(field, EmbeddedDocumentSerializer) and field.field_name in data:
                  field.initial_data = data[field.field_name]
  
          ret = super(DocumentSerializer, self).to_internal_value(data)
  
          # for EmbeddedDocumentSerializers create _validated_data
          # so that create()/update() could use them
          for field in self._writable_fields:
              if isinstance(field, EmbeddedDocumentSerializer) and field.field_name in ret:
                  field._validated_data = ret[field.field_name]
  
          return ret
docs: Calls super() from DRF, but with an addition.
  
          Creates initial_data and _validated_data for nested
          EmbeddedDocumentSerializers, so that recursive_save could make
          use of them.
  
          If meets any arbitrary data, not expected by fields,
          just silently drops them from validated_data.