20

所以我有两个模型,一个排名模型和一个用户排名模型。该应用程序以人们获取项目列表并对其进行排名(例如:“2008 年最佳电影”)为中心。排名模型是总体聚合排名列表,它是根据人们为该列表创建的所有不同 UserRankings 计算得出的。因此,对于每个排名,都有一堆不同的 UserRankings,每个用户通过提交他们的排名版本列表来给出他/她的意见。UserRanking 模型有一个名为“ranking”的 ForeignKey 字段,它指向 Ranking 模型。

无论如何,我正在努力收集流行的排名。我的第一步是使用这行代码获取与他们关联的大多数 UserRankings 的排名:

popular = Ranking.objects.all().annotate(num_user_rankings=Count('userranking')).order_by('num_user_rankings')[:50]

但是,Django 给了我一个 NameError 并说:“未定义全局名称 'Count'”。它不会抱怨 annotate (仅在 Django Development 版本中可用),这意味着 Django Development 工作正常吗?'Count' 在 Django 文档中被清楚地描述为可以用作注释的 arg 的几个聚合函数之一。这完全没有意义。

实际上,我只是对其进行了测试,并且能够使用不带参数的注释来显示我的页面,并且它没有给我任何错误(显然我也删除了 order_by)。所以注释确实有效!

4

2 回答 2

60

您是否从 Count 导入django.db.models

from django.db.models import Count
于 2009-08-02T00:57:35.903 回答
-1

从 django.db.models 导入计数

于 2020-03-16T10:35:20.357 回答