2011-08-05 19 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運行以實現這種目的。

相關問題