diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 043a44edd..e2bd57000 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -190,7 +190,7 @@ class Field(object): raise SkipField() return self.default - def validate(self, data=empty): + def validate_value(self, data=empty): """ Validate a simple representation and return the internal value. @@ -506,6 +506,7 @@ class DateField(Field): default_timezone = timezone.get_default_timezone() value = timezone.make_naive(value, default_timezone) return value.date() + if isinstance(value, datetime.date): return value @@ -560,6 +561,7 @@ class DateTimeField(Field): if isinstance(value, datetime.datetime): return value + if isinstance(value, datetime.date): value = datetime.datetime(value.year, value.month, value.day) if settings.USE_TZ: @@ -675,7 +677,7 @@ class ChoiceField(Field): for item in choices ] if all(pairs): - self.choices = {key: val for key, val in choices} + self.choices = {key: display_value for key, display_value in choices} else: self.choices = {item: item for item in choices} diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 8ca283876..0727b8cdf 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -205,7 +205,7 @@ class Serializer(BaseSerializer): validate_method = getattr(self, 'validate_' + field.field_name, None) primitive_value = field.get_value(data) try: - validated_value = field.validate(primitive_value) + validated_value = field.validate_value(primitive_value) if validate_method is not None: validated_value = validate_method(validated_value) except ValidationError as exc: @@ -327,6 +327,7 @@ class ModelSerializer(Serializer): models.EmailField: EmailField, models.FileField: FileField, models.FloatField: FloatField, + models.ImageField: ImageField, models.IntegerField: IntegerField, models.NullBooleanField: BooleanField, models.PositiveIntegerField: IntegerField, @@ -336,7 +337,6 @@ class ModelSerializer(Serializer): models.TextField: CharField, models.TimeField: TimeField, models.URLField: URLField, - # models.ImageField: ImageField, } _options_class = ModelSerializerOptions