from django.db.models import QuerySet, Count, Q from .models import Park def get_base_park_queryset() -> QuerySet[Park]: """Get base queryset with all needed annotations and prefetches""" return ( Park.objects.select_related('operator', 'property_owner', 'location') .prefetch_related( 'photos', 'rides' ) .annotate( current_ride_count=Count('rides', distinct=True), current_coaster_count=Count('rides', filter=Q(rides__category="RC"), distinct=True) ) .order_by('name') )