我有2个模型Books
和Categories
,我想知道如何根据他们所拥有的书籍数量来获得前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)
任何帮助都会很棒,
感谢。
答案 0 :(得分:5)
在Django文档中查看Aggregation and order-by。
您应该可以执行以下操作:
Category.objects.annotate(num_books=Count('book')).order_by('num_books')
这将为您提供按其受欢迎程度排序的类别列表,然后您可以使用切片仅显示第一个(或最后一个)十个。