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 [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
-~----------~----~----~----~------~----~------~--~---