Django and conditional aggregates
Posted
by piquadrat
on Stack Overflow
See other posts from Stack Overflow
or by piquadrat
Published on 2010-05-20T15:15:38Z
Indexed on
2010/05/23
22:00 UTC
Read the original article
Hit count: 355
I have two models, authors and articles:
class Author(models.Model):
name = models.CharField('name', max_length=100)
class Article(models.Model)
title = models.CharField('title', max_length=100)
pubdate = models.DateTimeField('publication date')
authors = models.ManyToManyField(Author)
Now I want to select all authors and annotate them with their respective article count. That's a piece of cake with Django's aggregates. Problem is, it should only count the articles that are already published. According to ticket 11305 in the Django ticket tracker, this is not yet possible. I tried to use the CountIf
annotation mentioned in that ticket, but it doesn't quote the datetime string and doesn't make all the joins it would need.
So, what's the best solution, other than writing custom SQL?
© Stack Overflow or respective owner