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: 357

Filed under:
|
|

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

Related posts about python

Related posts about django