diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 110ffbfa98d..fdbb7661c8a 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -431,7 +431,9 @@ def run_validation(self, data=empty): if is_empty_value: return data - value = self.to_internal_value(data) + to_validate = self._read_only_defaults() + to_validate.update(data) + value = self.to_internal_value(to_validate) try: self.run_validators(value) value = self.validate(value) @@ -457,14 +459,6 @@ def _read_only_defaults(self): return defaults - def run_validators(self, value): - """ - Add read_only fields with defaults to value before running validators. - """ - to_validate = self._read_only_defaults() - to_validate.update(value) - super(Serializer, self).run_validators(to_validate) - def to_internal_value(self, data): """ Dict of native values <- Dict of primitive datatypes.