diff --git a/docs/release-notes/version-2.9.md b/docs/release-notes/version-2.9.md index cf759e3bf..2b06d0582 100644 --- a/docs/release-notes/version-2.9.md +++ b/docs/release-notes/version-2.9.md @@ -8,6 +8,7 @@ * [#5004](https://github.com/netbox-community/netbox/issues/5004) - Permit assignment of an interface to a LAG on any peer virtual chassis member * [#5012](https://github.com/netbox-community/netbox/issues/5012) - Return details of exceptions resulting from report/script execution * [#5020](https://github.com/netbox-community/netbox/issues/5020) - Correct handling of dependent objects during bulk deletion +* [#5022](https://github.com/netbox-community/netbox/issues/5022) - Fix exception when editing IP address with NAT inside IP assigned --- diff --git a/netbox/ipam/forms.py b/netbox/ipam/forms.py index 5f6a28dad..1e8e9038a 100644 --- a/netbox/ipam/forms.py +++ b/netbox/ipam/forms.py @@ -616,10 +616,15 @@ class IPAddressForm(BootstrapMixin, TenancyForm, ReturnURLForm, CustomFieldModel elif type(instance.assigned_object) is VMInterface: initial['virtual_machine'] = instance.assigned_object.virtual_machine initial['vminterface'] = instance.assigned_object - if instance.nat_inside and instance.nat_inside.device is not None: - initial['nat_site'] = instance.nat_inside.device.site - initial['nat_rack'] = instance.nat_inside.device.rack - initial['nat_device'] = instance.nat_inside.device + if instance.nat_inside: + nat_inside_parent = instance.nat_inside.assigned_object + if type(nat_inside_parent) is Interface: + initial['nat_site'] = nat_inside_parent.device.site.pk + initial['nat_rack'] = nat_inside_parent.device.rack.pk + initial['nat_device'] = nat_inside_parent.device.pk + elif type(nat_inside_parent) is VMInterface: + initial['nat_cluster'] = nat_inside_parent.virtual_machine.cluster.pk + initial['nat_virtual_machine'] = nat_inside_parent.virtual_machine.pk kwargs['initial'] = initial super().__init__(*args, **kwargs)