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

Use unrestricted querysets for prefetching related objects

This commit is contained in:
Jeremy Stretch
2020-07-07 15:45:46 -04:00
parent 25e1319864
commit 353d88f0a6

View File

@ -1,7 +1,7 @@
from django.conf import settings from django.conf import settings
from django.contrib import messages from django.contrib import messages
from django.db import transaction from django.db import transaction
from django.db.models import Count, OuterRef from django.db.models import Count, Prefetch
from django.shortcuts import get_object_or_404, redirect, render from django.shortcuts import get_object_or_404, redirect, render
from django_tables2 import RequestConfig from django_tables2 import RequestConfig
@ -119,9 +119,9 @@ class CircuitTypeBulkDeleteView(BulkDeleteView):
# #
class CircuitListView(ObjectListView): class CircuitListView(ObjectListView):
_terminations = CircuitTermination.objects.filter(circuit=OuterRef('pk'))
queryset = Circuit.objects.prefetch_related( queryset = Circuit.objects.prefetch_related(
'provider', 'type', 'tenant', 'terminations__site' Prefetch('terminations', CircuitTermination.objects.unrestricted()),
'provider', 'type', 'tenant'
).annotate_sites() ).annotate_sites()
filterset = filters.CircuitFilterSet filterset = filters.CircuitFilterSet
filterset_form = forms.CircuitFilterForm filterset_form = forms.CircuitFilterForm
@ -174,14 +174,20 @@ class CircuitBulkImportView(BulkImportView):
class CircuitBulkEditView(BulkEditView): class CircuitBulkEditView(BulkEditView):
queryset = Circuit.objects.prefetch_related('provider', 'type', 'tenant').prefetch_related('terminations__site') queryset = Circuit.objects.prefetch_related(
Prefetch('terminations', CircuitTermination.objects.unrestricted()),
'provider', 'type', 'tenant'
)
filterset = filters.CircuitFilterSet filterset = filters.CircuitFilterSet
table = tables.CircuitTable table = tables.CircuitTable
form = forms.CircuitBulkEditForm form = forms.CircuitBulkEditForm
class CircuitBulkDeleteView(BulkDeleteView): class CircuitBulkDeleteView(BulkDeleteView):
queryset = Circuit.objects.prefetch_related('provider', 'type', 'tenant').prefetch_related('terminations__site') queryset = Circuit.objects.prefetch_related(
Prefetch('terminations', CircuitTermination.objects.unrestricted()),
'provider', 'type', 'tenant'
)
filterset = filters.CircuitFilterSet filterset = filters.CircuitFilterSet
table = tables.CircuitTable table = tables.CircuitTable