diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index 727389ef1..0e124e601 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -2619,15 +2619,23 @@ class DeviceTestCase(TestCase, ChangeLoggedFilterSetTests): addresses = IPAddress.objects.filter(address__family=4) params = {'primary_ip4_id': [addresses[0].pk, addresses[1].pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'primary_ip4': [str(addresses[0].address), str(addresses[1].address)]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) params = {'primary_ip4_id': [addresses[2].pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0) + params = {'primary_ip4': [str(addresses[2].address)]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0) def test_primary_ip6(self): addresses = IPAddress.objects.filter(address__family=6) params = {'primary_ip6_id': [addresses[0].pk, addresses[1].pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'primary_ip6': [str(addresses[0].address), str(addresses[1].address)]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) params = {'primary_ip6_id': [addresses[2].pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0) + params = {'primary_ip6': [str(addresses[2].address)]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0) def test_virtual_chassis_id(self): params = {'virtual_chassis_id': [VirtualChassis.objects.first().pk]} @@ -6452,15 +6460,23 @@ class VirtualDeviceContextTestCase(TestCase, ChangeLoggedFilterSetTests): addresses = IPAddress.objects.filter(address__family=4) params = {'primary_ip4_id': [addresses[0].pk, addresses[1].pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'primary_ip4': [str(addresses[0].address), str(addresses[1].address)]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) params = {'primary_ip4_id': [addresses[2].pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0) + params = {'primary_ip4': [str(addresses[2].address)]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0) def test_primary_ip6(self): addresses = IPAddress.objects.filter(address__family=6) params = {'primary_ip6_id': [addresses[0].pk, addresses[1].pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'primary_ip6': [str(addresses[0].address), str(addresses[1].address)]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) params = {'primary_ip6_id': [addresses[2].pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0) + params = {'primary_ip6': [str(addresses[2].address)]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0) class MACAddressTestCase(TestCase, ChangeLoggedFilterSetTests): diff --git a/netbox/ipam/filtersets.py b/netbox/ipam/filtersets.py index e16885ba0..63131b125 100644 --- a/netbox/ipam/filtersets.py +++ b/netbox/ipam/filtersets.py @@ -1219,8 +1219,20 @@ class PrimaryIPFilterSet(django_filters.FilterSet): queryset=IPAddress.objects.all(), label=_('Primary IPv4 (ID)'), ) + primary_ip4 = django_filters.ModelMultipleChoiceFilter( + field_name='primary_ip4__address', + queryset=IPAddress.objects.all(), + to_field_name='address', + label=_('Primary IPv4 (address)'), + ) primary_ip6_id = django_filters.ModelMultipleChoiceFilter( field_name='primary_ip6', queryset=IPAddress.objects.all(), label=_('Primary IPv6 (ID)'), ) + primary_ip6 = django_filters.ModelMultipleChoiceFilter( + field_name='primary_ip6__address', + queryset=IPAddress.objects.all(), + to_field_name='address', + label=_('Primary IPv6 (address)'), + ) diff --git a/netbox/virtualization/tests/test_filtersets.py b/netbox/virtualization/tests/test_filtersets.py index d53ca78de..81db07188 100644 --- a/netbox/virtualization/tests/test_filtersets.py +++ b/netbox/virtualization/tests/test_filtersets.py @@ -525,15 +525,23 @@ class VirtualMachineTestCase(TestCase, ChangeLoggedFilterSetTests): addresses = IPAddress.objects.filter(address__family=4) params = {'primary_ip4_id': [addresses[0].pk, addresses[1].pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'primary_ip4': [str(addresses[0].address), str(addresses[1].address)]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) params = {'primary_ip4_id': [addresses[2].pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0) + params = {'primary_ip4': [str(addresses[2].address)]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0) def test_primary_ip6(self): addresses = IPAddress.objects.filter(address__family=6) params = {'primary_ip6_id': [addresses[0].pk, addresses[1].pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'primary_ip6': [str(addresses[0].address), str(addresses[1].address)]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) params = {'primary_ip6_id': [addresses[2].pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0) + params = {'primary_ip6': [str(addresses[2].address)]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 0) def test_serial_number(self): params = {'serial': ['111-aaa', '222-bbb']}