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") )