diff --git a/netbox/ipam/filtersets.py b/netbox/ipam/filtersets.py index bca3f08c9..f67317b7d 100644 --- a/netbox/ipam/filtersets.py +++ b/netbox/ipam/filtersets.py @@ -209,10 +209,10 @@ class PrefixFilterSet(PrimaryModelFilterSet, TenancyFilterSet): method='search_contains', label='Prefixes which contain this prefix or IP', ) - depth = django_filters.NumberFilter( + depth = MultiValueNumberFilter( field_name='_depth' ) - children = django_filters.NumberFilter( + children = MultiValueNumberFilter( field_name='_children' ) mask_length = django_filters.NumberFilter( diff --git a/netbox/ipam/tests/test_filtersets.py b/netbox/ipam/tests/test_filtersets.py index 282a19b66..087328189 100644 --- a/netbox/ipam/tests/test_filtersets.py +++ b/netbox/ipam/tests/test_filtersets.py @@ -400,7 +400,8 @@ class PrefixTestCase(TestCase, ChangeLoggedFilterSetTests): Prefix(prefix='10.0.0.0/16'), Prefix(prefix='2001:db8::/32'), ) - Prefix.objects.bulk_create(prefixes) + for prefix in prefixes: + prefix.save() def test_family(self): params = {'family': '6'} @@ -431,6 +432,18 @@ class PrefixTestCase(TestCase, ChangeLoggedFilterSetTests): params = {'contains': '2001:db8:0:1::/64'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_depth(self): + params = {'depth': '0'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 8) + params = {'depth__gt': '0'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + + def test_children(self): + params = {'children': '0'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 8) + params = {'children__gt': '0'} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + def test_mask_length(self): params = {'mask_length': '24'} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)