From 380a5cf8a7d805f2d8b2f4ae4baa63517aaa27cc Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 22 Jun 2020 15:12:35 -0400 Subject: [PATCH] Fix IP choices for DeviceForm --- netbox/dcim/forms.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/netbox/dcim/forms.py b/netbox/dcim/forms.py index 2109f0784..7eda7d8cd 100644 --- a/netbox/dcim/forms.py +++ b/netbox/dcim/forms.py @@ -1816,18 +1816,22 @@ class DeviceForm(BootstrapMixin, TenancyForm, CustomFieldModelForm): ip_choices = [(None, '---------')] # Gather PKs of all interfaces belonging to this Device or a peer VirtualChassis member - interface_ids = self.instance.vc_interfaces.values('pk') + interface_ids = self.instance.vc_interfaces.values_list('pk', flat=True) # Collect interface IPs interface_ips = IPAddress.objects.prefetch_related('interface').filter( - address__family=family, interface_id__in=interface_ids + address__family=family, + assigned_object_type=ContentType.objects.get_for_model(Interface), + assigned_object_id__in=interface_ids ) if interface_ips: ip_list = [(ip.id, '{} ({})'.format(ip.address, ip.interface)) for ip in interface_ips] ip_choices.append(('Interface IPs', ip_list)) # Collect NAT IPs nat_ips = IPAddress.objects.prefetch_related('nat_inside').filter( - address__family=family, nat_inside__interface__in=interface_ids + address__family=family, + nat_inside__assigned_object_type=ContentType.objects.get_for_model(Interface), + nat_inside__assigned_object_id__in=interface_ids ) if nat_ips: ip_list = [(ip.id, '{} ({})'.format(ip.address, ip.nat_inside.address)) for ip in nat_ips]