diff --git a/netbox/ipam/forms/model_forms.py b/netbox/ipam/forms/model_forms.py index f1b165838..17e66fa34 100644 --- a/netbox/ipam/forms/model_forms.py +++ b/netbox/ipam/forms/model_forms.py @@ -369,17 +369,18 @@ class IPAddressForm(TenancyForm, NetBoxModelForm): 'primary_for_parent', _("Only IP addresses assigned to an interface can be designated as primary IPs.") ) - prev_interface = self.instance.interface.first() or self.instance.vminterface.first() - # If the prev interface exists and does not match the new interface, we need to validate it isn't set as primary - # for the parent - if prev_interface and prev_interface != interface: - prev_parent = prev_interface.device or prev_interface.virtual_machine - # Check that the parent exists and if it is set as a primary ip. - if prev_parent and prev_parent.primary_ip4 == self.instance or prev_parent.primary_ip6 == self.instance: - self.add_error( - selected_objects[0], - _("Cannot reassign IP address while it is designated as the primary IP for the parent object") - ) + if self.instance.pk: + prev_interface = self.instance.interface.first() or self.instance.vminterface.first() + # If the prev interface exists and does not match the new interface, we need to validate it isn't set as primary + # for the parent + if prev_interface and prev_interface != interface: + prev_parent = prev_interface.device or prev_interface.virtual_machine + # Check that the parent exists and if it is set as a primary ip. + if prev_parent and prev_parent.primary_ip4 == self.instance or prev_parent.primary_ip6 == self.instance: + self.add_error( + selected_objects[0], + _("Cannot reassign IP address while it is designated as the primary IP for the parent object") + ) # Do not allow assigning a network ID or broadcast address to an interface. if interface and (address := self.cleaned_data.get('address')):