【发布时间】:2023-03-29 02:04:01
【问题描述】:
很抱歉,我无法提供我的整个代码作为我的工作,我目前正在使用我的个人笔记本电脑。
我是 django 新手,需要帮助来解决这个问题
我需要得到最大不同计数的结果
所以, 我有内容和评论表 内容有 content_id 和 title 评论有comment_id,comment,content_id(FK)
用户每次评论内容评论表都会记录这些。 例如。 评论
comment_id comment content_id
1 blah blah 1
2 blah blah 1
3 blah blah 2
4 blah blah 3
我需要获取 cmet 数量最多的内容标题。 所以对于上面的例子, content_id 1 具有最多的 cmets,因为它有 2 个 cmets。 我需要从表 Content 中获取 content_id 1 的标题。
在 SQL 中,我可以使用类似的东西(不完全是,只是为了让您了解我想要得到什么)
SELECT DISTINCT(content.content_id) AS no_of_comments,
title
FROM content INNER JOIN comment
ON content.content_id = comment.content_id
GROUP BY content.content_id
ORDER BY no_of_comments DESC
那么我可以得到
no_of_comments title
2 Title Of Content One
1 Title Of Content Two
1 Title Of Content Three
然后我只需要返回“内容标题”作为我的代码的结果
我知道如何从 SQL 中获取这些,从上面的代码开始,但不知道如何使用 django 做到这一点
如果有的话,我想我可能需要在 django 中使用游标, 但是当我开始加入这两个表时,我不知道该怎么做。 我正在使用 django 1.6
请帮帮我。
【问题讨论】:
-
谢谢,@Anentropic 这个页面帮助很大,但仍有问题。
c = Comment.objects.values('content_id').annotate(count=Count('conent_id')).order_by('-count')然后c[0].count这会得到最大计数吗?如果是这样,那么我怎样才能获得标题?或者至少是 content_id? -
从内容模型的角度查询会更有意义:
Content.objects.annotate(count=Count('comment__id')).order_by('-count') -
@Anentropic 啊,明白了!谢谢。
标签: python django postgresql psql