django 项目,文章到期后自动取消置顶,这个时间如何处理好?

2022-08-14 22:57:48 +08:00
 python30

比如一个用户置顶一个文章,置顶了 10 天。

到期后这个文章自动取消置顶。

我的想法是
用时间差与这个置顶时间判断一下。
如果大于这个时间,就在文章加裁的时候执行一个函数
把置顶的字段设置为:is_top = False

但是这样感觉哪里总有点不对的地方。
大家对这个有什么思路吗?
谢谢。

2093 次点击
所在节点    Python
11 条回复
vone
2022-08-14 23:30:24 +08:00
order by case when expires<now() then 0 else 1 end
kennir
2022-08-14 23:32:43 +08:00
如果是我会考虑用
chenjjl
2022-08-14 23:46:23 +08:00
查询文章不分页吗?不分页的话这么做倒是没啥毛病
zmaplex
2022-08-15 00:40:11 +08:00
1L 已经给出了答案,SQL 取文章的时候过滤下置顶到期时间就可以了。
ChoateYao
2022-08-15 01:51:04 +08:00
定时任务、延迟队列
param
2022-08-15 07:59:10 +08:00
django 的话,用 annotate 算出时间差吧
param
2022-08-15 08:01:07 +08:00
objects.annotate(F("top_at")-timezone.now())
DreamSpace
2022-08-15 09:22:04 +08:00
置顶列表存 redis ,再设个过期时间。
yinft
2022-08-15 13:44:55 +08:00
一楼的 sql 就够用了
python30
2022-08-15 22:06:07 +08:00
@vone
@zmaplex
@yinft
我是用的 django 开发的。
要用原生的 sql 语句? 还是怎么
python30
2022-08-15 22:06:30 +08:00
@param 谢谢。在研究

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/872832

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX