> few minor questions:
> missing )
> [(region, future_events.filter(club__region=region) for region in regions]
>
> guessing the missing ) goes here:
> [(region, future_events.filter(club__region=region)) for region in regions]
Yup...must have been my poor transcription from brain to email.
Sorry for the confusion. It's building a list of tuples where
the first item is the region and the second is the list of events
in that region.
> What happens if there are no events in one of the regions?
>
> Does that cause a hit to the DB for each region?
In its current state, yes, it does cause a DB hit for each
region, data or no data. Yes, Baxter, filter() is lazy, but it's
instantiated in the view when called upon, so it is actually
evaluated even when blank.
To avoid this, an alternative might be something like
future_events = Event.object.filter(
start_date__gte=now).select_related(
).order_by('start_date')
events = {} # or SortedDict if order matters
for event in future_events: # one DB hit here
region = event.club.region
ev_list = events.get(region, [])
ev_list.append(event)
events[region] = ev_list
return render_to_response(..., {
'events': events, # this might need to
# be events.iteritems() or something
# like that
...})
This version should only hit the DB once for all the event data
and also sort the data before it ever gets to you, so you
(Baxter) can avoid the dictsort in your template.
-tim
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---