How to count and display objects in relation ManyToMany in Django
django, django-models, many-to-many, python
Solution
Check out annotate() function from Django 1.1.
http://docs.djangoproject.com/en/dev/topics/db/aggregation/#topics-db-aggregation
Example (from that URL above):
>>> q = Book.objects.annotate(num_authors=Count('authors'))
>>> q[0].num_authors
2
>>> q[1].num_authors
1
Problem
I have a simple model with news and categories: ``` class Category(models.Model): name = models.CharField() slug = models.SlugField() class News(models.Model): category = models.ManyToManyField(Category) title = models.CharField() slug = models.SlugField() text = models.TextField() date = models.DateTimeField() ``` I want to count news for each category and display it on the website, like this: ``` Sport (5) School (4) Films (6) Computer (2) etc... ``` How can I do this?? Thanks!