diff --git a/netbox/ipam/api/nested_serializers.py b/netbox/ipam/api/nested_serializers.py index b3ac4eac0..0589998e4 100644 --- a/netbox/ipam/api/nested_serializers.py +++ b/netbox/ipam/api/nested_serializers.py @@ -6,7 +6,7 @@ from ipam import models from ipam.models.l2vpn import L2VPNTermination, L2VPN from ipam.validators import validate_ipaddress_with_mask from netbox.api.serializers import WritableNestedSerializer -from netaddr import IPNetwork +from netaddr import AddrFormatError, IPNetwork __all__ = [ 'IPAddressField', @@ -48,7 +48,12 @@ class IPAddressField(serializers.CharField): self.validators.append(validator) def to_internal_value(self, data): - return IPNetwork(data) + try: + IPNetwork(data) + except AddrFormatError: + raise serializers.ValidationError("Invalid IP address format: {}".format(data)) + except (TypeError, ValueError) as e: + raise serializers.ValidationError(e) def to_representation(self, value): return str(value)