mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-25 18:08:38 -06:00
Strip annotations from queryset when retrieving object count for API pagination
This commit is contained in:
parent
2b1516ea79
commit
240d22696f
@ -81,10 +81,17 @@ class OptionalLimitOffsetPagination(LimitOffsetPagination):
|
|||||||
|
|
||||||
def paginate_queryset(self, queryset, request, view=None):
|
def paginate_queryset(self, queryset, request, view=None):
|
||||||
|
|
||||||
try:
|
if hasattr(queryset, 'all'):
|
||||||
self.count = queryset.count()
|
# TODO: This breaks filtering by annotated values
|
||||||
except (AttributeError, TypeError):
|
# Make a clone of the queryset with any annotations stripped (performance hack)
|
||||||
|
qs = queryset.all()
|
||||||
|
qs.query.annotations.clear()
|
||||||
|
self.count = qs.count()
|
||||||
|
|
||||||
|
else:
|
||||||
|
# We're dealing with an iterable, not a QuerySet
|
||||||
self.count = len(queryset)
|
self.count = len(queryset)
|
||||||
|
|
||||||
self.limit = self.get_limit(request)
|
self.limit = self.get_limit(request)
|
||||||
self.offset = self.get_offset(request)
|
self.offset = self.get_offset(request)
|
||||||
self.request = request
|
self.request = request
|
||||||
|
Loading…
Reference in New Issue
Block a user