Я пытаюсь получить список 100 самых популярных книг в моей базе данных, а затем создать список уникальных категорий, которые есть в этом списке.Вот мои упрощенные модели книг, избранных и категорий:
class Book(models.Model):
name = models.CharField(max_length=100)
category = models.ForeignKey(Category)
class Favorite(models.Model):
user = models.ForeignKey(User)
book = models.ForeignKey(Book)
class Category(models.Model):
name = models.CharField(max_length=100)
Я легко могу получить список 100 самых популярных книг, используя следующий запрос:
books = Book.objects.annotate(num_favorites=Count('favorite')).order_by('-num_favorites')[:100]
Но где яПроблемы начинаются, когда я пытаюсь получить список уникальных категорий для этих 100 самых популярных книг.Следующий запрос не работает (ошибка опубликована ниже), и я не могу понять, почему.
>>> categories = Category.objects.filter(book__in=books).distinct()
>>> categories
FieldError: Cannot resolve keyword 'num_favorites' into field. Choices are: category, favorite, id, name
Может кто-нибудь пролить свет на то, что мне здесь не хватает?