                  fields[field_name] = declared_fields[field_name]
                  continue
  
              # Determine the serializer field class and keyword arguments.
              field_class, field_kwargs = self.build_field(
                  source, info, model, depth
              )
 
</s> remove             extra_field_kwargs = extra_kwargs.get(field_name, {})
 </s> add  </s> remove                 field_name, info, model, depth
 </s> add                 source, info, model, depth
            extra_field_kwargs = extra_kwargs.get(field_name, {})
            source = extra_field_kwargs.get('source') or field_name

                  fields[field_name] = declared_fields[field_name]
                  continue
  
            extra_field_kwargs = extra_kwargs.get(field_name, {})
            source = extra_field_kwargs.get('source') or field_name

              # Determine the serializer field class and keyword arguments.
              field_class, field_kwargs = self.build_field(
                  source, info, model, depth
              )
keep keep add keep keep keep keep
 Do not ignore source when building fields dynamically

This commit fixes the issue when you set the keyword argument `source`
and your have not set the serializer fields explicitly. Then the
construction of field failed because there is not actually any model
field with that name.

However, you are still able to imply the name of model field by
providing the `source` keyword argument. 
rest_framework/serializers.py