diff --git a/netbox/ipam/api/serializers.py b/netbox/ipam/api/serializers.py index 064452667..a5ca8a8a8 100644 --- a/netbox/ipam/api/serializers.py +++ b/netbox/ipam/api/serializers.py @@ -1,4 +1,5 @@ from django.contrib.contenttypes.models import ContentType +from drf_spectacular.types import OpenApiTypes from drf_spectacular.utils import extend_schema_field from rest_framework import serializers @@ -24,7 +25,7 @@ class ASNRangeSerializer(NetBoxModelSerializer): url = serializers.HyperlinkedIdentityField(view_name='ipam-api:asnrange-detail') rir = NestedRIRSerializer() tenant = NestedTenantSerializer(required=False, allow_null=True) - asn_count = serializers.IntegerField(read_only=True) + asn_count = serializers.SerializerMethodField(read_only=True) class Meta: model = ASNRange @@ -33,6 +34,10 @@ class ASNRangeSerializer(NetBoxModelSerializer): 'custom_fields', 'created', 'last_updated', 'asn_count', ] + @extend_schema_field(OpenApiTypes.INT) + def get_asn_count(self, obj): + return obj.get_child_asns().count() + # # ASNs diff --git a/netbox/ipam/tables/asn.py b/netbox/ipam/tables/asn.py index 511e914ec..cdeba7d03 100644 --- a/netbox/ipam/tables/asn.py +++ b/netbox/ipam/tables/asn.py @@ -21,10 +21,10 @@ class ASNRangeTable(TenancyColumnsMixin, NetBoxTable): tags = columns.TagColumn( url_name='ipam:asnrange_list' ) - asn_count = columns.LinkedCountColumn( - viewname='ipam:asn_list', - url_params={'asn_id': 'pk'}, - verbose_name=_('ASN Count') + asn_count = columns.TemplateColumn( + orderable=False, + verbose_name=_('ASN Count'), + template_code='''{{ record.get_child_asns.count }}''' ) class Meta(NetBoxTable.Meta):