如何通过日期时间在MySQL和Django中删除数据库条目?
我在用Django 1.3和MySQL,数据库里存了帖子。这些帖子会存放一段时间,比如7天。现在我想知道,怎么才能在这7天过后删除这些帖子?我不是在问怎么删除,而是想知道怎么判断什么时候该删除。
我不知道这样做是否合适,但我考虑的一个方法是,当用户查找某个帖子时,如果这个帖子的存放时间到了,就把它删除。另外,当我搜索或者浏览帖子时,从数据库里拉取帖子列表,我会检查这个列表,删除那些超过时间限制的帖子。让我担心的是,如果我拉取了10个帖子,其中9个都超过了时间限制,那我就得再拉取一个新列表。如果新列表里还有超过时间限制的帖子,我又得继续拉取……这样一来,可能会导致很多次查询,效率就会很低。所以有没有更好的办法呢?
或者有没有更好的实现方式?
总之,我想知道怎么能让用户永远看不到过期的帖子。
我不确定我表达得是否清楚,我对怎么高效地做到这一点感到很困惑。
3 个回答
0
难道不能在帖子上标记一个过期日期吗?
class Post(models.Model):
# ...
date_expire = models.DateField()
我会把保存的方法改进一下,给当前日期加上7天,然后把这个日期保存到那个字段里。这样,当用户查看帖子的时候,
def some_view(request):
# ....
posts = Post.objects.filter(date_expire__gte=date_obj)
如果你需要删除这些帖子,一种简单的方法就是通过类似的查询方式收集过期的帖子,然后调用删除功能。或者,你也可以设置一个脚本,通过定时任务来处理这类事情。
0