You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按日获取最新Post并按PostLike点赞数降序排序

按日期+点赞数排序帖子实现方案

前置说明

假设Post为帖子主表,PostLike为点赞记录表,两者通过PostLike的post外键关联到Post表。

Django ORM实现代码

from django.db.models import Count, DateField, Cast

# 核心查询逻辑
post_list = Post.objects.annotate(
    # 统计每个帖子的总点赞数
    like_total = Count("postlike"),
    # 提取发布时间的日期部分,排除时分秒干扰,保证按自然天聚合
    publish_date = Cast("publish_time", output_field=DateField())
).order_by(
    # 第一排序规则:按发布日期倒序,越新的日期越靠前
    "-publish_date",
    # 第二排序规则:同日期内按点赞数倒序,点赞越高越靠前
    "-like_total"
)

字段说明

  • publish_time 为Post表存储发布时间的字段,可替换为你实际的字段名
  • 若Post表已单独存储date类型的发布日期字段,可直接去掉Cast逻辑,第一排序参数改为-你的日期字段名即可

原生SQL实现参考

SELECT 
    p.*,
    COUNT(pl.id) AS like_total,
    DATE(p.publish_time) AS publish_date
FROM post p
LEFT JOIN post_like pl ON p.id = pl.post_id
GROUP BY p.id
ORDER BY publish_date DESC, like_total DESC;

效果验证

上述代码可完全实现你预期的排序效果:

10-Post1-20likes (18 Nov)
9-Post2-0Likes (18 Nov)
8-Post3-20Likes (17 Nov)
7-Post4-10Likes (17 Nov)
6-Post5-50Likes (16 Nov)
5-Post6-5Likes (16 Nov)

内容的提问来源于stack exchange,提问作者KKumar Technologies

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:24:03