From ec58b5338f32d2922d81a3510087d526c165c447 Mon Sep 17 00:00:00 2001 From: Daniel Sheppard Date: Thu, 21 Dec 2023 14:39:56 -0600 Subject: [PATCH] Fix test to check for PK --- netbox/ipam/forms/model_forms.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) 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')):