python - through - one to one relations django
Cómo contar y mostrar objetos en relación ManyToMany en Django (2)
Tengo un modelo simple con noticias y categorías:
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()
Quiero contar noticias para cada categoría y mostrarlas en el sitio web, como esta:
Sport (5)
School (4)
Films (6)
Computer (2)
etc...
¿¿Cómo puedo hacer esto??
¡Gracias!
Echa un vistazo a la función anotar () de Django 1.1.
http://docs.djangoproject.com/en/dev/topics/db/aggregation/#topics-db-aggregation
Ejemplo (desde esa URL arriba):
>>> q = Book.objects.annotate(num_authors=Count(''authors''))
>>> q[0].num_authors
2
>>> q[1].num_authors
1
Muy simple:
>>> for category in Category.objects.all():
... print category.name, category.news_set.count()