Получить «популярные категории» в Джанго - PullRequest
4 голосов
/ 18 июля 2011

У меня есть 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)

Любая помощь будет великолепна,

Спасибо.

1 Ответ

5 голосов
/ 18 июля 2011

Посмотрите на Агрегирование и упорядочение по в документации Django.

Вы должны быть в состоянии сделать что-то вроде:

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

Это даст вам список категорий, упорядоченных по их популярности, и вы сможете отобразить только первую (или последнюю) десятку, используя срез.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...