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

Fixes: #5450 - Added Coalesce to viewsets for the _count functions

This commit is contained in:
Daniel Sheppard
2020-12-15 12:50:28 -06:00
committed by GitHub
parent 67f9e16905
commit 3c2b2f26b9
8 changed files with 49 additions and 41 deletions

View File

@@ -1,3 +1,4 @@
from django.db.models.functions import Coalesce
from rest_framework.routers import APIRootView
from dcim.models import Device
@@ -22,7 +23,7 @@ class VirtualizationRootView(APIRootView):
class ClusterTypeViewSet(ModelViewSet):
queryset = ClusterType.objects.annotate(
cluster_count=get_subquery(Cluster, 'type')
cluster_count=Coalesce(get_subquery(Cluster, 'type'), 0)
)
serializer_class = serializers.ClusterTypeSerializer
filterset_class = filters.ClusterTypeFilterSet
@@ -30,7 +31,7 @@ class ClusterTypeViewSet(ModelViewSet):
class ClusterGroupViewSet(ModelViewSet):
queryset = ClusterGroup.objects.annotate(
cluster_count=get_subquery(Cluster, 'group')
cluster_count=Coalesce(get_subquery(Cluster, 'group'), 0)
)
serializer_class = serializers.ClusterGroupSerializer
filterset_class = filters.ClusterGroupFilterSet
@@ -40,8 +41,8 @@ class ClusterViewSet(CustomFieldModelViewSet):
queryset = Cluster.objects.prefetch_related(
'type', 'group', 'tenant', 'site', 'tags'
).annotate(
device_count=get_subquery(Device, 'cluster'),
virtualmachine_count=get_subquery(VirtualMachine, 'cluster')
device_count=Coalesce(get_subquery(Device, 'cluster'), 0),
virtualmachine_count=Coalesce(get_subquery(VirtualMachine, 'cluster'), 0)
)
serializer_class = serializers.ClusterSerializer
filterset_class = filters.ClusterFilterSet