Thanks Tom, but I get an error because timedelta doesn't take years - I've
changed it to weeks=3120 and it works.

Because of that error I've also found another thread discussing the issue:

http://stackoverflow.com/questions/765797/python-timedelta-in-years

I liked the most popular answer's standard lib use of from_date.replace -
is there a norm regards where a small utility like that would be put? It
feels wrong putting it in [views|admin|models|url].py ..?

cheers
L.

On Wednesday, May 9, 2012, Tom Evans wrote:

> On Wed, May 9, 2012 at 12:12 AM, Lachlan Musicman 
> <[email protected]<javascript:;>>
> wrote:
> > Hola,
> >
> > I have a model Person with a dob = models.DateField()
> >
> > I would like to filter by age - in particular only include people less
> than
> > 60 years old.
> >
> > I am having no luck getting the syntax right and was looking for
> pointers?
> >
> >           queryset=Person.objects.filter(dob__year__gte
> > = datetime.datetime.today().year-61)
> >
> > gets me an error like: Join on field 'dob' not permitted. Did you
> misspell
> > 'year' for the lookup type?
> >
> > RETIRE_Y = datetime.datetime.today().year-61
> > ...
> >               queryset=Person.objects.filter(dob__gte =
> > datetime(RETIRE_Y,1,1)))),
> >
> > gives me errors like: 'module' object is not callable
> >
> > I don't want to create a new field or function on the Person object that
> > would calculate "age" everyday...
> >
> > What am I doing wrong/how can I make it right?
> >
>
> You're looking at the data the wrong way. Instead of trying to filter
> out people whose age is over 60, filter out people who were born over
> 60 years ago:
>
> latest_retirees_dob = datetime.datetime.now() -
> datetime.timedelta(years=60)
> still_working = Person.objects.filter(dob__gt=latest_retirees_dob)
> retired = Person.objects.filter(dob__lte=latest_retirees_dob)
>
> Cheers
>
> Tom
>
> --
> 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]<javascript:;>
> .
> To unsubscribe from this group, send email to
> [email protected] <javascript:;>.
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>
>

-- 
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.

Reply via email to