非常困惑......在 Django 中使用“注释”的问题

Posted

技术标签:

【中文标题】非常困惑......在 Django 中使用“注释”的问题【英文标题】:Very confused... problem using 'annotate' in Django 【发布时间】:2009-08-02 00:48:48 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

from django.db.models import Count

【讨论】:

我不敢相信答案这么简单。我知道我在做一些愚蠢的事情,但并不是那么愚蠢!谢谢,祝你有美好的一天 =) '从 django.db.models 导入计数'【参考方案2】:

从 django.db.models 导入计数

【讨论】:

以上是关于非常困惑......在 Django 中使用“注释”的问题的主要内容,如果未能解决你的问题,请参考以下文章

有啥方法可以使用 python 中的注释在 django 中编写 URL

在 Django 中使用带注释的查询集运行总计

在 Django 中使用 GROUP_CONCAT 和其他注释

使用注释时在 Django 中显示选择字段的名称

如何在 Django 查询集中使用条件注释 Count

Django 在 json 字段中注释特定键