繁体   English   中英

如何在Django中计算和显示与ManyToMany相关的对象

[英]How to count and display objects in relation ManyToMany in Django

我有一个包含新闻和类别的简单模型:

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()

我想统计每个类别的新闻,并在网站上显示,如下所示:

Sport (5)
School (4)
Films (6)
Computer (2)
etc...

我怎样才能做到这一点??

谢谢!

从Django 1.1中检出annotate()函数。

http://docs.djangoproject.com/en/dev/topics/db/aggregation/#topics-db-aggregation

示例(从上面的URL):

>>> q = Book.objects.annotate(num_authors=Count('authors'))
>>> q[0].num_authors
2
>>> q[1].num_authors
1

很简单的:

>>> for category in Category.objects.all():
...     print category.name, category.news_set.count()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM