django - 非常困惑...在 Django 中使用 'annotate' 的问题

标签 django sorting annotate

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

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

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

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

事实上,我刚刚测试了它,我能够使用没有参数的注释来显示我的页面,并且它没有给我任何错误(显然我也删除了 order_by )。所以注释肯定有效!

最佳答案

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

from django.db.models import Count

关于django - 非常困惑...在 Django 中使用 'annotate' 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1217892/

相关文章:

r - 如何在数学表达式中添加星号符号?

python - Django 测试运行器在 Ubuntu 上的 virtualenv 中失败

list - 按第二个元组元素对元组列表进行排序

r - 我如何写 "*value* *plus-minus sign* *value* ",连同文本,以及 ggplot2,R 的注释?

Pythonic 以棘手的顺序对字典列表进行排序

mysql - MySQL中按中位数的复杂排序

python - 当 x 轴和 y 轴为文本时注释数据点 matplotlib

python - 创建计时器计数器 - Python

django-shop vs Satchless?

python - Django + django-nose 的 PyCharm 代码覆盖率