在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