gpt4 book ai didi

django - 使用 Django 评论获取 Django 中评论最多的帖子

转载 作者:行者123 更新时间:2023-12-02 22:35:10 28 4
gpt4 key购买 nike

我想在我的 Django 应用程序中获取评论最多的十个帖子,但我做不到,因为我想不出合适的方法。

我目前正在使用 django 评论框架,并且我已经看到使用 aggregate or annotate 执行此操作的可能性。 ,但我知道怎么做。

事情会是:

  • 获取所有帖子
  • 计算每个帖子的评论数(我有一个 comment_count 方法)
  • 将帖子从评论最多的到评论最少的排序
  • 获取前 10 个(例如)

有什么“简单”或“pythonic”的方法可以做到这一点吗?我有点迷茫,因为评论框架只能通过模板标签访问,而不是直接从代码访问(除非你想修改它)

感谢任何帮助

最佳答案

您是对的,您需要使用注释和聚合功能。您需要做的是分组并获取 Comment 模型的 object_pk 的计数:

from django.contrib.comments.models import Comment
from django.db.models import Count

o_list = Comment.objects.values('object_pk').annotate(ocount=Count('object_pk'))

这会将如下内容分配给 o_list:

[{'object_pk': '123', 'ocount': 56},
{'object_pk': '321', 'ocount': 47},
...etc...]

然后您可以对列表进行排序并切分前 10 个:

top_ten_objects = sorted(o_list, key=lambda k: k['ocount'])[:10]

然后您可以使用 object_pk 中的值来检索附加评论的对象。

关于django - 使用 Django 评论获取 Django 中评论最多的帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11563215/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com