Files
thrillwiki_django_no_react/parks/management/commands/update_park_counts.py
2024-11-03 22:03:56 +00:00

35 lines
1.1 KiB
Python

from django.core.management.base import BaseCommand
from django.db.models import Count, Q
from parks.models import Park
class Command(BaseCommand):
help = 'Update total_rides and total_roller_coasters counts for all parks'
def handle(self, *args, **options):
parks = Park.objects.all()
operating_rides = Q(status='OPERATING')
updated = 0
for park in parks:
# Count total operating rides
total_rides = park.rides.filter(operating_rides).count()
# Count total operating roller coasters
total_coasters = park.rides.filter(
operating_rides,
category='RC'
).count()
# Update park counts
Park.objects.filter(id=park.id).update(
total_rides=total_rides,
total_roller_coasters=total_coasters
)
updated += 1
self.stdout.write(
self.style.SUCCESS(
f'Successfully updated counts for {updated} parks'
)
)