How to make a query?

32 views
Skip to first unread message

galgal

unread,
Jun 27, 2012, 3:28:27 PM6/27/12
to django...@googlegroups.com
I have a model Article. It has a datetime field, title and description.
How can I get last 5 months from now, where there is at least 1 article added? Other words - how to get last 5 months which are not empty?

Nikolas Stevenson-Molnar

unread,
Jun 27, 2012, 3:40:23 PM6/27/12
to django...@googlegroups.com
Use the 'dates' method:
https://docs.djangoproject.com/en/dev/ref/models/querysets/#dates with
"month" for the kind argument. You can filter the query first to
restrict to last five months. E.g:

>>> oldest = datetime.date.today()-datetime.timedelta(30*5) #roughly 5
months ago
>>> months = Article.objects.filter(date__gte=oldest).dates('date', 'month')

_Nik

Article.objects.filter(date__gte
> --
> You received this message because you are subscribed to the Google
> Groups "Django users" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/django-users/-/BbMtFrpjLH4J.
> To post to this group, send email to django...@googlegroups.com.
> To unsubscribe from this group, send email to
> django-users...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.


galgal

unread,
Jun 27, 2012, 5:44:50 PM6/27/12
to django...@googlegroups.com
I made it that way:

prev_months = Article.objects.dates('add_date', 'month').filter(add_date__lt=datetime.date(int(year), int(month), 1))[:5]
next_months = Article.objects.dates('add_date', 'month').filter(add_date__gte=datetime.date(int(year), int(month) + 1, 1))[:5]
Reply all
Reply to author
Forward
0 new messages