我需要在DB中存储一行,并在24小时后将其标记为已删除(仅使用标记变量),我不清楚我将如何完成此操作。
我已经考虑过使用Celery+Django来运行异步任务,但什么时候应该运行?每一行都必须在不同的时刻被标记为已删除。
是否有任何Django功能可以实现这一目标?
编辑:
每一行都有用户相关,我需要在他的行被标记为已删除时通知相关用户。
答案 0 :(得分:3)
不要存储标志或过期日期。仅在添加记录时存储。由此,计算何时应该被视为过期。您可以通过添加计算字段将其保留到数据库,或者在Django模型中执行此操作。无论哪种方式,都不要存储任何可以从更一般的数据计算的东西。
关于通知,重量级方法是@PabTorre所描述的;在创建记录时已安排任务。否则只需安排通知任务运行得足够频繁(每隔这么多分钟)。根据上次运行任务的时间,您可以推断出任何特定的到期时间是否已发送通知。
答案 1 :(得分:1)
一种方法可行,因为您正在进行软删除。 为"到期日期"添加一列,当您创建记录时,您添加的时间戳现在为+ 24小时。 从那里你可以走几条路。 构建一个过滤表的视图,以仅查看其中"到期日期" > now()...或者在同一个检查上设置二进制标志。 然后查询该视图。