很困惑......在Django中使用'annotate'的问题

Dan*_*rip 14 sorting django annotate

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

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

popular = Ranking.objects.all().annotate(num_user_rankings=Count('userranking')).order_by('num_user_rankings')[:50]
Run Code Online (Sandbox Code Playgroud)

但是,Django给了我一个NameError并说:"全局名称'Count'未定义".它没有抱怨注释(只在Django Development版本中可用),这意味着Django开发工作正常吗?"计数"在Django文档中清楚地描述为几个可用作注释arg的聚合函数之一.这绝对没有意义.

事实上,我只是测试了它,并且我能够使用没有参数的注释来显示我的页面,并且它没有给我任何错误(显然我也删除了order_by).因此注释确实有效!

Mer*_*son 40

你从中导入了Count django.db.models吗?

  • 我简直不敢相信答案很简单.我知道我做了一些愚蠢的事,但不是那么愚蠢!谢谢,祝你有个美好的一天=) (4认同)