【发布时间】:2011-08-15 04:01:11
【问题描述】:
我正在尝试检索我的数据库中 100 种最受欢迎的书籍的列表,然后创建该列表中唯一类别的列表。以下是我简化的 Book、Favorite 和 Category 模型:
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
谁能解释一下我在这里遗漏了什么?
【问题讨论】:
标签: mysql django django-models django-queryset