Files
thrillwiki_django_no_react/memory-bank/decisions/ride_count_field.md

1.5 KiB

Ride Count Field Implementation

Context

While implementing park views, we encountered an error where a ride_count annotation conflicted with an existing model field of the same name. This raised a question about how to handle real-time ride counts versus stored counts.

Decision

We decided to use both approaches but with distinct names:

  1. Model Field (ride_count):

    • Kept the original field for backward compatibility
    • Used in test fixtures and filtering system
    • Can serve as a cached/denormalized value
  2. Annotation (current_ride_count):

    • Added new annotation with a distinct name
    • Provides real-time count of rides
    • Used in templates for display purposes

This approach allows us to:

  • Maintain existing functionality in tests and filters
  • Show accurate, real-time counts in the UI
  • Avoid name conflicts between fields and annotations

Implementation

  • Kept the ride_count IntegerField in the Park model
  • Added current_ride_count = Count('rides', distinct=True) annotation in views
  • Updated templates to use current_ride_count for display

Future Considerations

We might want to:

  1. Add a periodic task to sync the stored ride_count with the computed value
  2. Consider deprecating the stored field if it's not needed for performance
  3. Add validation to ensure the stored count stays in sync with reality
  • parks/models.py
  • parks/views.py
  • parks/templates/parks/partials/park_list_item.html
  • parks/tests/test_filters.py