数据库选择与日期时间排序(实时Python仪表板)

2 投票
1 回答
616 浏览
提问于 2025-04-17 03:06

我有一个仪表盘,用来显示实时更新和最新通知。

想象一下,这是一个博客系统,你可以订阅作者的帖子和评论。然后我想在我的仪表盘上显示两种类型的通知,按时间顺序排列:

  1. 最新帖子
  2. 最新评论

假设我只想在加载仪表盘时显示10条更新(后续的更新我会通过ajax获取)。我应该如何查询数据库,以及如何对结果进行排序呢?

我考虑过查询两个表(帖子和评论),获取我订阅的数据,把这些数据放到一个列表里,然后按时间排序,最后返回最新的10条。但我觉得这不是一个很好的解决方案,因为如果这些表(以及我的订阅)开始增多,排序会花很多时间。

你对这个问题有什么想法或建议吗?

1 个回答

2

首先,从第一个表中查询数据,按照插入时间从最新到最旧的顺序排列,并限制结果为10条。接着,按照同样的方式从第二个表中查询数据。最后,在Python中将这两个结果合并,并返回前10条数据。

一个Django的例子可能是这样的:

from operator import attrgetter

recent_posts = Post.objects.order_by('-created')[:10]
recent_comments = Comment.objects.order_by('-created')[:10]
both_combined = list(recent_posts) + list(recent_comments)
both_sorted = sorted(both_combined, key=attrgetter('created'), reverse=True)
most_recent = both_sorted[:10]

撰写回答