Made field mapping use mix/max kwargs for DurationField validators.

This commit is contained in:
Carlton Gibson 2018-02-22 15:23:40 +01:00
parent a4c9e4c911
commit d1822ec6b6
2 changed files with 24 additions and 3 deletions

View File

@ -12,7 +12,7 @@ from rest_framework.compat import postgres_fields
from rest_framework.validators import UniqueValidator
NUMERIC_FIELD_TYPES = (
models.IntegerField, models.FloatField, models.DecimalField
models.IntegerField, models.FloatField, models.DecimalField, models.DurationField,
)

View File

@ -7,6 +7,7 @@ an appropriate set of serializer fields for each case.
"""
from __future__ import unicode_literals
import datetime
import decimal
from collections import OrderedDict
@ -16,7 +17,6 @@ from django.core.validators import (
MaxValueValidator, MinLengthValidator, MinValueValidator
)
from django.db import models
from django.db.models import DurationField as ModelDurationField
from django.test import TestCase
from django.utils import six
@ -349,7 +349,7 @@ class TestDurationFieldMapping(TestCase):
"""
A model that defines DurationField.
"""
duration_field = ModelDurationField()
duration_field = models.DurationField()
class TestSerializer(serializers.ModelSerializer):
class Meta:
@ -363,6 +363,27 @@ class TestDurationFieldMapping(TestCase):
""")
self.assertEqual(unicode_repr(TestSerializer()), expected)
def test_duration_field_with_validators(self):
class ValidatedDurationFieldModel(models.Model):
"""
A model that defines DurationField with validators.
"""
duration_field = models.DurationField(
validators=[MinValueValidator(datetime.timedelta(days=1)), MaxValueValidator(datetime.timedelta(days=3))]
)
class TestSerializer(serializers.ModelSerializer):
class Meta:
model = ValidatedDurationFieldModel
fields = '__all__'
expected = dedent("""
TestSerializer():
id = IntegerField(label='ID', read_only=True)
duration_field = DurationField(max_value=datetime.timedelta(3), min_value=datetime.timedelta(1))
""")
self.assertEqual(unicode_repr(TestSerializer()), expected)
class TestGenericIPAddressFieldValidation(TestCase):
def test_ip_address_validation(self):