Переглянути джерело

Fixed #24302 -- Added DurationField.formfield()

Tim Graham 10 роки тому
батько
коміт
2d7c27d387

+ 7 - 0
django/db/models/fields/__init__.py

@@ -1689,6 +1689,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]

+ 9 - 0
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)