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('owner') .prefetch_related('location', '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') )