diff --git a/netbox/ipam/tables.py b/netbox/ipam/tables.py index 12c835e6c..740441b42 100644 --- a/netbox/ipam/tables.py +++ b/netbox/ipam/tables.py @@ -266,8 +266,13 @@ class PrefixTable(BaseTable): accessor=Accessor('_depth'), verbose_name='Depth' ) - children = tables.Column( + children = LinkedCountColumn( accessor=Accessor('_children'), + viewname='ipam:prefix_list', + url_params={ + 'vrf_id': 'vrf_id', + 'within': 'prefix', + }, verbose_name='Children' ) status = ChoiceFieldColumn( diff --git a/netbox/utilities/tables.py b/netbox/utilities/tables.py index 86660c2e5..14dc3ab6d 100644 --- a/netbox/utilities/tables.py +++ b/netbox/utilities/tables.py @@ -1,4 +1,5 @@ import django_tables2 as tables +from django.conf import settings from django.contrib.auth.models import AnonymousUser from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType @@ -284,7 +285,10 @@ class LinkedCountColumn(tables.Column): if value: url = reverse(self.viewname, kwargs=self.view_kwargs) if self.url_params: - url += '?' + '&'.join([f'{k}={getattr(record, v)}' for k, v in self.url_params.items()]) + url += '?' + '&'.join([ + f'{k}={getattr(record, v) or settings.FILTERS_NULL_CHOICE_VALUE}' + for k, v in self.url_params.items() + ]) return mark_safe(f'{value}') return value