Skip to content

Commit 77200f6

Browse files
committed
Made field mapping use mix/max kwargs for DurationField validators.
1 parent 96ce8ea commit 77200f6

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

rest_framework/utils/field_mapping.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from rest_framework.validators import UniqueValidator
1313

1414
NUMERIC_FIELD_TYPES = (
15-
models.IntegerField, models.FloatField, models.DecimalField
15+
models.IntegerField, models.FloatField, models.DecimalField, models.DurationField,
1616
)
1717

1818

tests/test_model_serializer.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"""
88
from __future__ import unicode_literals
99

10+
import datetime
1011
import decimal
1112
from collections import OrderedDict
1213

@@ -16,7 +17,6 @@
1617
MaxValueValidator, MinLengthValidator, MinValueValidator
1718
)
1819
from django.db import models
19-
from django.db.models import DurationField as ModelDurationField
2020
from django.test import TestCase
2121
from django.utils import six
2222

@@ -347,7 +347,7 @@ class DurationFieldModel(models.Model):
347347
"""
348348
A model that defines DurationField.
349349
"""
350-
duration_field = ModelDurationField()
350+
duration_field = models.DurationField()
351351

352352
class TestSerializer(serializers.ModelSerializer):
353353
class Meta:
@@ -361,6 +361,27 @@ class Meta:
361361
""")
362362
self.assertEqual(unicode_repr(TestSerializer()), expected)
363363

364+
def test_duration_field_with_validators(self):
365+
class ValidatedDurationFieldModel(models.Model):
366+
"""
367+
A model that defines DurationField with validators.
368+
"""
369+
duration_field = models.DurationField(
370+
validators=[MinValueValidator(datetime.timedelta(days=1)), MaxValueValidator(datetime.timedelta(days=3))]
371+
)
372+
373+
class TestSerializer(serializers.ModelSerializer):
374+
class Meta:
375+
model = ValidatedDurationFieldModel
376+
fields = '__all__'
377+
378+
expected = dedent("""
379+
TestSerializer():
380+
id = IntegerField(label='ID', read_only=True)
381+
duration_field = DurationField(max_value=datetime.timedelta(3), min_value=datetime.timedelta(1))
382+
""")
383+
self.assertEqual(unicode_repr(TestSerializer()), expected)
384+
364385

365386
class TestGenericIPAddressFieldValidation(TestCase):
366387
def test_ip_address_validation(self):

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy