2011-08-05 20 views
0

我使用mysql与Django 1.3,我有职位存储在数据库中。这些帖子会存储一段时间,比如7天。如何在持续时间(7天)结束后删除帖子?我不问如何删除,但更多如何确定何时删除?我考虑这样做用mysql和django的日期时间删除数据库中的条目?

我不知道这是否是一个做事的好方法,但一个方法是,当用户查找后(查询发送)且持续时间时,删除了一篇日志。另外,当我进行搜索或浏览时,如果从数据库中提取帖子列表,我将通过列表并在时间限制内删除帖子。让我担心这个实现的是当我拉一个列表,说10个帖子,9个超过时间限制时,我将不得不得到另一个列表,如果有超过该列表限制的帖子,我必须得到更多....等等。因此,一个查询可能会导致很多查询,并最终效率非常低。那么有没有更好的方法来做到这一点?

或者也许是一个更好的方式来实现这个?

那么基本上,我该如何实现一个系统,以便用户永远不会看到超过其持续时间的帖子?

不确定我是否正确表达了一切,我对如何有效地做到这一点感到困惑。

回答

0

你可能会想建立一个计划的作业批量删除旧的帖子每个夜晚。在this post中涵盖了在Django环境中运行的预定作业。

顶部答案:

的一个解决方案,我已经采用的是这样做:

1)创建custom management command,例如

python manage.py my_cool_command 

2)使用cron在需要的时间运行我的命令。

+0

嗯看着这个和Django的芹菜,哪种方式更好/更有效?加上基本上我创建的作业,并使用守护进程bash来运行一切? – Derek

0

你不能在帖子上标记过期日期吗?

class Post(models.Model): 
    # ... 
    date_expire = models.DateField() 

然后,我会扩展保存方法,将7天添加到当前日期并将其保存到该字段。然后,当用户检索的帖子,

def some_view(request): 
    # .... 
    posts = Post.objects.filter(date_expire__gte=date_obj) 

如果需要删除它们,一个简单的办法是为视图收集通过类似的查询集过期后并调用删除()。或者,您也可以设置脚本以通过cron运行以实现这种目的。

相关问题