Another approach would be to add a method to your events model. Name
it something like "current_occurrences" and have it return the
filtered occurrences. Ex:

class event( models.Model ):
   ...
   def current_occurrences( self ):
       return
self.occurrence_set.filter( date__gte=datetime.datetime.today() )

Then you would change your template to

{% for occurrence in event.current_occurences %}

That should offer a little better performance since you wouldn't be
pulling the entire occurrence set for each event.

If performance is a major factor, investigate writing a custom model
manager for your events model.  That might be the best option for
retrieving the joined set of events with current occurrences in one
fell swoop in a nice abstracted manner.

-Brian

On Jul 1, 10:12 am, Brian Luft <[EMAIL PROTECTED]> wrote:
> Ok, you are asking for a list of events that have occurences on or
> after today's date.  Then with each event instance you are asking for
> ALL occurence instances (event.occurrence_set.all). ALL means EVERY
> occurence associated with that event object.  You haven't done
> anything to filter out occurrences based on date in that step.
>
> -Brian
>
> On Jul 1, 9:51 am, Brandon Taylor <[EMAIL PROTECTED]> wrote:
>
> > Hi everyone,
>
> > I have Events and Occurrences of an Event. Occurrence contains a
> > foreign_key for the Event.
> > In my template, I need to display the Event and Occurrences as such:
>
> > Event Title One
> >     June 1, 2008 [times]
> >     July 23, 2008 [times]
>
> > Event Title Two
> >     August 25, 2008 [times]
> >     September 1, 2008 [times]
>
> > But, I only want to display dates that are greater than, or equal to
> > today. In my view, I am selecting Events as such:
>
> > events_list =
> > events.filter(occurrence__date__gte=datetime.datetime.today())
>
> > Here's my template code:
> > <ul>
> >     {% for event in events_list %}
> >         <li>{{ event.title }}
> >               {% for occurrence in event.occurrence_set.all %}
> >                   <ul>
> >                       <li>
> >                           {{ occurrence.date }}
> >                       </li>
> >                   </ul>
> >               {% endfor %}
> >         </li>
> >     {% endfor %}
> > </ul>
>
> > Which is showing ALL of the occurrences, not just the ones with a date
> > greater than today. Given the sample data set above, it shouldn't
> > display the event for June. Can someone please help me out with this?
> > I'd really appreciate some advice.
>
> > TIA,
> > Brandon
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to