diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py index c46851c7fe..e487d7abf5 100644 --- a/django/db/models/fields/__init__.py +++ b/django/db/models/fields/__init__.py @@ -1692,6 +1692,13 @@ class DurationField(Field): val = self._get_val_from_obj(obj) return '' if val is None else duration_string(val) + def formfield(self, **kwargs): + defaults = { + 'form_class': forms.DurationField, + } + defaults.update(kwargs) + return super(DurationField, self).formfield(**defaults) + class EmailField(CharField): default_validators = [validators.validate_email] diff --git a/tests/model_fields/test_durationfield.py b/tests/model_fields/test_durationfield.py index 0ef160104d..fece35d57b 100644 --- a/tests/model_fields/test_durationfield.py +++ b/tests/model_fields/test_durationfield.py @@ -1,6 +1,7 @@ import datetime import json +from django import forms from django.core import exceptions, serializers from django.db import models from django.test import TestCase @@ -70,3 +71,11 @@ class TestValidation(TestCase): "'not a datetime' value has an invalid format. " "It must be in [DD] [HH:[MM:]]ss[.uuuuuu] format." ) + + +class TestFormField(TestCase): + # Tests for forms.DurationField are in the forms_tests app. + + def test_formfield(self): + field = models.DurationField() + self.assertIsInstance(field.formfield(), forms.DurationField)