Django soft-delete軟刪除

 

   在django中,實現這個功能很簡單,咱們採用一個字段用來保存刪除的時間。若記錄沒有被刪除,那麼設置該值爲None,若是被刪除,那麼設置時間爲刪除的時間。

1 class BaseSchema(models.Model):
2     createdAt = models.DateTimeField("建立時間",auto_now_add=True)
3     updatedAt = models.DateTimeField("更新時間",auto_now=True)
4     deletedAt = models.DateTimeField("刪除時間",null=True,default=None)
5 
6     def delete(self, using=None, keep_parents=False):
7         self.deletedAt = timezone.now()
8         self.save()

 

上面是一個基類,正真的模型是繼承自它,這樣能夠記錄下建立時間,每次會自動更新更新時間,而且實現了軟刪除。django

能夠看到,重寫了delete方法,當執行刪除操做的時候(例如:User.objects.get(id=1).delete()),會在裏面更新屬性deletedAt的值,而後保存,並不會正真刪除記錄。學習

因此你在取得元素的時候,要注意一些,須要使用filterUser.objects.filter(deletedAt=None),而不是all()spa

 

學習博客地址: http://m.blog.csdn.net/q1242027878/article/details/74906780.net

相關文章
相關標籤/搜索