diff --git a/netbox/dcim/tests/test_filtersets.py b/netbox/dcim/tests/test_filtersets.py index ede1e2a09d3..d7f775e26e9 100644 --- a/netbox/dcim/tests/test_filtersets.py +++ b/netbox/dcim/tests/test_filtersets.py @@ -2617,15 +2617,23 @@ def test_primary_ip4(self): 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]} @@ -6450,15 +6458,23 @@ def test_primary_ip4(self): 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 81cbd2ef8ed..238f3a9141e 100644 --- a/netbox/ipam/filtersets.py +++ b/netbox/ipam/filtersets.py @@ -1193,8 +1193,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 eef5d6b5200..2fd7fe12ffb 100644 --- a/netbox/virtualization/tests/test_filtersets.py +++ b/netbox/virtualization/tests/test_filtersets.py @@ -525,15 +525,23 @@ def test_primary_ip4(self): 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']}