  
          try:
              native = data[field_name]
          except KeyError:
              return  # TODO Consider validation behaviour, 'required' opt etc...
  
          value = self.from_native(native)
          if self.source == '*':
              if value:
                  into.update(value)
 
</s> remove             return ModelField(model_field=model_field)
 </s> add             ret = ModelField(model_field=model_field)

        if model_field.default:
            ret.required = False

        return ret </s> remove             self._data.pop(self._METHOD_PARAM)
 </s> add  </s> remove             return field_mapping[model_field.__class__]()
 </s> add             ret = field_mapping[model_field.__class__]()
            if self.required:
                raise ValidationError(self.error_messages['required'])
            return
  
          try:
              native = data[field_name]
          except KeyError:
            if self.required:
                raise ValidationError(self.error_messages['required'])
            return
  
          value = self.from_native(native)
          if self.source == '*':
              if value:
                  into.update(value)
keep keep keep keep replace keep keep keep keep keep
 Fix issue where required fields were not being properly validated.  Also make model fields with a default value be not required 
rest_framework/fields.py