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()
上面是一个基类,正真的模型是继承自它,这样可以记录下创建时间,每次会自动更新更新时间,并且实现了软删除。
可以看到,重写了delete方法,当执行删除操作的时候(例如:User.objects.get(id=1).delete()
),会在里面更新属性deletedAt
的值,然后保存,并不会正真删除记录。
所以你在取得元素的时候,要注意一些,需要使用filterUser.objects.filter(deletedAt=None)
,而不是all()
学习博客地址: http://m.blog.csdn.net/q1242027878/article/details/74906780
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步