Skip to content

Commit 490f0c9

Browse files
committed
Merge branch 'callorico-master'
2 parents 75be919 + b6c4d8c commit 490f0c9

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

rest_framework/utils/field_mapping.py

+7
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,13 @@ def get_field_kwargs(field_name, model_field):
185185
if validator is not validators.validate_slug
186186
]
187187

188+
# IPAddressField do not need to include the 'validate_ipv46_address' argument,
189+
if isinstance(model_field, models.GenericIPAddressField):
190+
validator_kwarg = [
191+
validator for validator in validator_kwarg
192+
if validator is not validators.validate_ipv46_address
193+
]
194+
188195
if getattr(model_field, 'unique', False):
189196
validator = UniqueValidator(queryset=model_field.model._default_manager)
190197
validator_kwarg.append(validator)

tests/test_model_serializer.py

+16
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,22 @@ class Meta:
344344
self.assertEqual(unicode_repr(TestSerializer()), expected)
345345

346346

347+
class TestGenericIPAddressFieldValidation(TestCase):
348+
def test_ip_address_validation(self):
349+
class IPAddressFieldModel(models.Model):
350+
address = models.GenericIPAddressField()
351+
352+
class TestSerializer(serializers.ModelSerializer):
353+
class Meta:
354+
model = IPAddressFieldModel
355+
356+
s = TestSerializer(data={'address': 'not an ip address'})
357+
self.assertFalse(s.is_valid())
358+
self.assertEquals(1, len(s.errors['address']),
359+
'Unexpected number of validation errors: '
360+
'{0}'.format(s.errors))
361+
362+
347363
# Tests for relational field mappings.
348364
# ------------------------------------
349365

0 commit comments

Comments
 (0)