Thanks very much for the advice Brian. I'll definitely switch that up
and try both approaches. I hadn't seen another way to get at a subset
of objects other than:

model_set.all

but now I do, thanks to your example.

Kind regards,
Brandon

On Jul 1, 12:28 pm, Brian Luft <[EMAIL PROTECTED]> wrote:
> 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