在django中获取“热门类别”

时间:2011-07-18 13:56:52

标签: python mysql django

我有2个模型BooksCategories,我想知道如何根据他们所拥有的书籍数量来获得前10个类别。

我的模型看起来像这样

class Book(models.Model):
    """(Book description)"""
    categories = models.ManyToManyField(Category)

class Category(models.Model):
    """(Topic description)"""
    name = models.CharField(blank=False, max_length=100)

任何帮助都会很棒,

感谢。

1 个答案:

答案 0 :(得分:5)

在Django文档中查看Aggregation and order-by

您应该可以执行以下操作:

Category.objects.annotate(num_books=Count('book')).order_by('num_books')

这将为您提供按其受欢迎程度排序的类别列表,然后您可以使用切片仅显示第一个(或最后一个)十个。