1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Call Coalesce() inside get_queryset()

This commit is contained in:
Jeremy Stretch
2020-12-17 14:45:50 -05:00
parent 202e7d0ebf
commit 91083fd6c5
8 changed files with 43 additions and 49 deletions

View File

@@ -1,5 +1,4 @@
from django.conf import settings
from django.db.models.functions import Coalesce
from django.shortcuts import get_object_or_404
from django_pglocks import advisory_lock
from drf_yasg.utils import swagger_auto_schema
@@ -33,8 +32,8 @@ class VRFViewSet(CustomFieldModelViewSet):
queryset = VRF.objects.prefetch_related('tenant').prefetch_related(
'import_targets', 'export_targets', 'tags'
).annotate(
ipaddress_count=Coalesce(get_subquery(IPAddress, 'vrf'), 0),
prefix_count=Coalesce(get_subquery(Prefix, 'vrf'), 0)
ipaddress_count=get_subquery(IPAddress, 'vrf'),
prefix_count=get_subquery(Prefix, 'vrf')
)
serializer_class = serializers.VRFSerializer
filterset_class = filters.VRFFilterSet
@@ -56,7 +55,7 @@ class RouteTargetViewSet(CustomFieldModelViewSet):
class RIRViewSet(ModelViewSet):
queryset = RIR.objects.annotate(
aggregate_count=Coalesce(get_subquery(Aggregate, 'rir'), 0)
aggregate_count=get_subquery(Aggregate, 'rir')
)
serializer_class = serializers.RIRSerializer
filterset_class = filters.RIRFilterSet
@@ -78,8 +77,8 @@ class AggregateViewSet(CustomFieldModelViewSet):
class RoleViewSet(ModelViewSet):
queryset = Role.objects.annotate(
prefix_count=Coalesce(get_subquery(Prefix, 'role'), 0),
vlan_count=Coalesce(get_subquery(VLAN, 'role'), 0)
prefix_count=get_subquery(Prefix, 'role'),
vlan_count=get_subquery(VLAN, 'role')
)
serializer_class = serializers.RoleSerializer
filterset_class = filters.RoleFilterSet
@@ -273,7 +272,7 @@ class IPAddressViewSet(CustomFieldModelViewSet):
class VLANGroupViewSet(ModelViewSet):
queryset = VLANGroup.objects.prefetch_related('site').annotate(
vlan_count=Coalesce(get_subquery(VLAN, 'group'), 0)
vlan_count=get_subquery(VLAN, 'group')
)
serializer_class = serializers.VLANGroupSerializer
filterset_class = filters.VLANGroupFilterSet
@@ -287,7 +286,7 @@ class VLANViewSet(CustomFieldModelViewSet):
queryset = VLAN.objects.prefetch_related(
'site', 'group', 'tenant', 'role', 'tags'
).annotate(
prefix_count=Coalesce(get_subquery(Prefix, 'vlan'), 0)
prefix_count=get_subquery(Prefix, 'vlan')
)
serializer_class = serializers.VLANSerializer
filterset_class = filters.VLANFilterSet