Loading django/db/models/fields/__init__.py +4 −1 Original line number Diff line number Diff line Loading @@ -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) Loading tests/model_fields/tests.py +13 −0 Original line number Diff line number Diff line Loading @@ -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') Loading
django/db/models/fields/__init__.py +4 −1 Original line number Diff line number Diff line Loading @@ -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) Loading
tests/model_fields/tests.py +13 −0 Original line number Diff line number Diff line Loading @@ -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')