所以我有两个模型,一个排名模型和一个用户排名模型。该应用程序以人们获取项目列表并对其进行排名(例如:“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)。所以注释确实有效!