Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

Fixed #20740 -- GenericIPAddressField should pass protocol to formfie…

…ld()

Thanks Jeff250.
  • Loading branch information...
commit f2cb94f1c0dc98663e7d493411bf9b82d1894559 1 parent a7d97a6
Tim Graham authored July 12, 2013
5  django/db/models/fields/__init__.py
@@ -1334,7 +1334,10 @@ def get_prep_value(self, value):
1334 1334
         return value
1335 1335
 
1336 1336
     def formfield(self, **kwargs):
1337  
-        defaults = {'form_class': forms.GenericIPAddressField}
  1337
+        defaults = {
  1338
+            'protocol': self.protocol,
  1339
+            'form_class': forms.GenericIPAddressField,
  1340
+        }
1338 1341
         defaults.update(kwargs)
1339 1342
         return super(GenericIPAddressField, self).formfield(**defaults)
1340 1343
 
13  tests/model_fields/tests.py
@@ -468,3 +468,16 @@ def test_set_and_retrieve(self):
468 468
     def test_max_length(self):
469 469
         dm = DataModel(short_data=self.binary_data*4)
470 470
         self.assertRaises(ValidationError, dm.full_clean)
  471
+
  472
+class GenericIPAddressFieldTests(test.TestCase):
  473
+    def test_genericipaddressfield_formfield_protocol(self):
  474
+        """
  475
+        Test that GenericIPAddressField with a specified protocol does not
  476
+        generate a formfield with no specified protocol. See #20740.
  477
+        """
  478
+        model_field = models.GenericIPAddressField(protocol='IPv4')
  479
+        form_field = model_field.formfield()
  480
+        self.assertRaises(ValidationError, form_field.clean, '::1')
  481
+        model_field = models.GenericIPAddressField(protocol='IPv6')
  482
+        form_field = model_field.formfield()
  483
+        self.assertRaises(ValidationError, form_field.clean, '127.0.0.1')

0 notes on commit f2cb94f

Please sign in to comment.
Something went wrong with that request. Please try again.