diff --git a/netbox/ipam/filtersets.py b/netbox/ipam/filtersets.py index 81cbd2ef8..238f3a914 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 eef5d6b52..2fd7fe12f 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']}