Commit f2cb94f1 authored by Tim Graham's avatar Tim Graham
Browse files

Fixed #20740 -- GenericIPAddressField should pass protocol to formfield()

Thanks Jeff250.
parent a7d97a67
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -1334,7 +1334,10 @@ class GenericIPAddressField(Field):
        return value

    def formfield(self, **kwargs):
        defaults = {'form_class': forms.GenericIPAddressField}
        defaults = {
            'protocol': self.protocol,
            'form_class': forms.GenericIPAddressField,
        }
        defaults.update(kwargs)
        return super(GenericIPAddressField, self).formfield(**defaults)

+13 −0
Original line number Diff line number Diff line
@@ -468,3 +468,16 @@ class BinaryFieldTests(test.TestCase):
    def test_max_length(self):
        dm = DataModel(short_data=self.binary_data*4)
        self.assertRaises(ValidationError, dm.full_clean)

class GenericIPAddressFieldTests(test.TestCase):
    def test_genericipaddressfield_formfield_protocol(self):
        """
        Test that GenericIPAddressField with a specified protocol does not
        generate a formfield with no specified protocol. See #20740.
        """
        model_field = models.GenericIPAddressField(protocol='IPv4')
        form_field = model_field.formfield()
        self.assertRaises(ValidationError, form_field.clean, '::1')
        model_field = models.GenericIPAddressField(protocol='IPv6')
        form_field = model_field.formfield()
        self.assertRaises(ValidationError, form_field.clean, '127.0.0.1')