Skip to content

Commit b3f25a4

Browse files
Closes #15087: Support for specifying a subset of API serializer fields (#15122)
* Enable dynamic field inclusion for REST API serializers * Recurse through nested serializer when resolving prefetches * Remove obsolete calls to prefetch_related() for API views * Remove support for brief_prefetch_fields viewset attribute * Rename query parameter * Fixes #15133: Fix FHRP group representation on assignments endpoint under brief mode (#15134) * Fixes #15133: Fix FHRP group representation on assignments endpoint under brief mode * Update API test * Restore get_queryset() on BriefModeMixin, minus prefetch logic * get_prefetches_for_serializer() should reference serializer field source if set
1 parent 7272035 commit b3f25a4

File tree

16 files changed

+176
-152
lines changed

16 files changed

+176
-152
lines changed

netbox/circuits/api/views.py

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def get_view_name(self):
2121
#
2222

2323
class ProviderViewSet(NetBoxModelViewSet):
24-
queryset = Provider.objects.prefetch_related('asns', 'tags').annotate(
24+
queryset = Provider.objects.annotate(
2525
circuit_count=count_related(Circuit, 'provider')
2626
)
2727
serializer_class = serializers.ProviderSerializer
@@ -33,7 +33,7 @@ class ProviderViewSet(NetBoxModelViewSet):
3333
#
3434

3535
class CircuitTypeViewSet(NetBoxModelViewSet):
36-
queryset = CircuitType.objects.prefetch_related('tags').annotate(
36+
queryset = CircuitType.objects.annotate(
3737
circuit_count=count_related(Circuit, 'type')
3838
)
3939
serializer_class = serializers.CircuitTypeSerializer
@@ -45,9 +45,7 @@ class CircuitTypeViewSet(NetBoxModelViewSet):
4545
#
4646

4747
class CircuitViewSet(NetBoxModelViewSet):
48-
queryset = Circuit.objects.prefetch_related(
49-
'type', 'tenant', 'provider', 'provider_account', 'termination_a', 'termination_z'
50-
).prefetch_related('tags')
48+
queryset = Circuit.objects.all()
5149
serializer_class = serializers.CircuitSerializer
5250
filterset_class = filtersets.CircuitFilterSet
5351

@@ -57,20 +55,17 @@ class CircuitViewSet(NetBoxModelViewSet):
5755
#
5856

5957
class CircuitTerminationViewSet(PassThroughPortMixin, NetBoxModelViewSet):
60-
queryset = CircuitTermination.objects.prefetch_related(
61-
'circuit', 'site', 'provider_network', 'cable__terminations'
62-
)
58+
queryset = CircuitTermination.objects.all()
6359
serializer_class = serializers.CircuitTerminationSerializer
6460
filterset_class = filtersets.CircuitTerminationFilterSet
65-
brief_prefetch_fields = ['circuit']
6661

6762

6863
#
6964
# Provider accounts
7065
#
7166

7267
class ProviderAccountViewSet(NetBoxModelViewSet):
73-
queryset = ProviderAccount.objects.prefetch_related('provider', 'tags')
68+
queryset = ProviderAccount.objects.all()
7469
serializer_class = serializers.ProviderAccountSerializer
7570
filterset_class = filtersets.ProviderAccountFilterSet
7671

@@ -80,6 +75,6 @@ class ProviderAccountViewSet(NetBoxModelViewSet):
8075
#
8176

8277
class ProviderNetworkViewSet(NetBoxModelViewSet):
83-
queryset = ProviderNetwork.objects.prefetch_related('tags')
78+
queryset = ProviderNetwork.objects.all()
8479
serializer_class = serializers.ProviderNetworkSerializer
8580
filterset_class = filtersets.ProviderNetworkFilterSet

netbox/core/api/views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def sync(self, request, pk):
4444

4545

4646
class DataFileViewSet(NetBoxReadOnlyModelViewSet):
47-
queryset = DataFile.objects.defer('data').prefetch_related('source')
47+
queryset = DataFile.objects.defer('data')
4848
serializer_class = serializers.DataFileSerializer
4949
filterset_class = filtersets.DataFileFilterSet
5050

@@ -53,6 +53,6 @@ class JobViewSet(ReadOnlyModelViewSet):
5353
"""
5454
Retrieve a list of job results
5555
"""
56-
queryset = Job.objects.prefetch_related('user')
56+
queryset = Job.objects.all()
5757
serializer_class = serializers.JobSerializer
5858
filterset_class = filtersets.JobFilterSet

0 commit comments

Comments
 (0)