diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 6caae9242..8e30e77a3 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -429,6 +429,11 @@ class ModelField(WritableField): "type": self.model_field.get_internal_type() } + def validate(self, value): + super(ModelField, self).validate(value) + if value is None and not self.model_field.null: + raise ValidationError(self.error_messages['invalid']) + ##### Typed Fields ##### @@ -474,10 +479,7 @@ class CharField(WritableField): self.validators.append(validators.MaxLengthValidator(max_length)) def from_native(self, value): - if isinstance(value, six.string_types): - return value - - if value is None: + if value in validators.EMPTY_VALUES: return '' return smart_text(value)